【数组的声明】
package main import ( "fmt" ) func main() { var a[3] int var b[3] string fmt.Println(a) fmt.Println(b) }
【数组的使用】
package main import ( "fmt" ) func main() { var a[3] int var b[3] string a[0] = 1 a[1] = 2 a[2] = 3 b[0] = "aaa" b[1] = "bbb" b[2] = "ccc" fmt.Println(a) fmt.Println(b) }
很简单的使用方法,注意这里Go语言不支持数组自动扩展,所以数组定义多大,就能使用多大,比如这里: a[3] = 4这样就是错误的,会报错: invalid array index 3 (out of bounds for 3-element array)
【初始化值】
a := [3]int{1, 2, 3} b := [3]string{"aaa", "bbb", "ccc"}
c := [...]int{4, 5, 6, 7, 8, 9, 10}
最后一行可以不指定数组长度初始化,具体长度由初始化的值个数决定。
【遍历数组】
遍历数组常用的就是for循环了,但是Go语言提供了range来迭代数组:
package main import ( "fmt" ) func main() { str := [...]string{"a", "b", "c", "d"} for i := 0; i < len(str); i++ { fmt.Printf("%d: %s ", i, str[i]) } for key, value := range str { fmt.Printf("%d: %s ", key, value) } fmt.Println(str) }
len 可以计算数组长度
【数组切片】
切片是数组的一些功能封装,但是切片并不产生新的数据,切片相当于对现有数据的引用。
package main import ( "fmt" ) func main() { a := [...]int{1, 2, 3, 4, 5, 6} b := a[1:4] b[0] = 999 fmt.Println(a) fmt.Println(b) }
以上面这个例子为例,结果是:
[1 999 3 4 5 6]
[999 3 4]
切片就很像是指针,他的所有操作,源数据都会被改变。