正文
学习是一个趁热打铁的过程,高效的学习能提高大脑反应。所以我们接着了解go语言的数组、变量作用域、函数。
数组
-
和其他语言申明类似:var variable_name [SIZE] variable_type
-
所有数据的数据类型相同且唯一
-
数据长度固定且不可更改
-
通过位置获取元素
我们可以看看一小段代码:
var balance [10] float32
balance = {1000.0, 2.0, 3.4, 7.0, 50.0}
var balance = [10]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
var a = [3][4]int{
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
}
变量作用域
正如我们了解的其他语言一样,go一样存在了变量以及他的作用域。同样的,跟我们以往的了解一样,go的变量作用域有以下几点:
-
局部变量(在函数中申明的变量。作用域只在函数体内,参数和返回值变量也是局部变量)
-
全局变量(在函数外申明的变量)
package main
import "fmt"
var g int
func main() {
var a, b int
a = 10
b = 20
g = a + b
fmt.Printf("结果: a = %d, b = %d and g = %d\n", a, b, g)
}
注意:go语言中局部变量和全局变量可以同名,但是函数中会悠闲考虑同名的局部变量。
函数
和其他任何语言一样,go语言一样存在函数,函数固定格式如下:
func function_name( [parameter list] ) [return_types] {
函数体
}
func是函数申明标志,function_name是函数名称,当然函数参数和函数返回值都是可以没有的。
需要注意的是,go语言可以有多个返回值:
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Mahesh", "Kumar")
fmt.Println(a, b)
}
函数参数传递方式(和C语言类似):
-
值传递
-
引用传递
-
在调用函数的时候把数据的内存地址传递过去,在函数中依据地址对数据进行修改将会影响实际值。(和c语言中的指针操作一样)
函数的用法:
-
作为数据值使用(不推荐,一定层面上降低了可读性)
-
闭包:匿名函数,可在动态编程中使用
-
方法:包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。
-
语法:func (variable_name variable_data_type) function_name() [return_type]{···}
关于方法的demo我们参考下
菜鸟教程
: