变量定义的时候会设置默认值0或空
例如
var a int
结果a=0
var s string
结果s = “”
下划线_:表示忽略某个值,例如函数有返回值,可以用下划线接收,相当于丢弃这个值
import一个package,如果没有用到,但是又不希望编译报错,可以在package前面加上个下划线_,默认只调用package的init函数,不会调用其他函数
例如:
import _ “fmt”
数组Array
数组定义:
例如定义整型数组
a := [4]int{1,2,3,4}
var b = [4]int{1,2,3,4}
var c [4]int = [4]int{1,2,3,4}
var d = [...]int{1,2,3,4}
定义数组的格式为 [n/…] type{…}
[]里面可以写入…,系统根据定义的数量设置数组的长度,定义的数组可以在变量名后声明类型,也可以省略。
二维数组的定义大致相同
var a = [2][4]int{{1,2,3,4},{5,6,7,8}}
var b = [...][4]int{{1,2,3,4},{5,6,7,8}}
var c [2][4]int = [...][4]int{{1,2,3,4},{5,6,7,8}}
用花括号包括一个维度的数组,其中第二纬度不能设置为…,必须要有具体的值。
使用内置函数 len 和 cap 都返回数组长度 (元素数量),对于二维数组只会计算第一个维度的长度。
a := [4]int{1,2,3,4}
fmt.Println(len(a),cap(a))
结果为4 4
var a = [2][4]int{{1,2,3,4},{5,6,7,8}}
fmt.Println(len(a),cap(a))
结果为2 2
数组遍历:
var a = [2][4]int{{1,2,3,4},{5,6,7,8}}
for k1,v1:=range a{
for k2,v2:= range v1{
fmt.Printf("(%d,%d)=%d\n",k1,k2,v2)
}
}
range 后面是数组,会返回两个参数,分别是下标和值,例如二维数组中,返回的是下标k1为第一维度的序列,v1是对应的一维数组,再次调用for循环,返回的v2才是数组里面的值。