数组
主要定义方式为:数组名称 [n] T (类型)表示拥有N个T类型的数组如:
var a [10]int #将变量a声明为拥有10个整数的数组,数组是不可变的,定义后其大小不能改变。 fmt.Println(a) #打印: [0 0 0 0 0 0 0 0 0 0] var b[5]int={1,2,3,4,5} fmt.Println(b)
数组初始化:
# 方法一: var a=[5]int{1,2,3,4,5} # 方法二:通过自变量在声明数组的同时快速初始化数组 b:= [5]int{2,3,4,5,6} 数组长度不确定可以用...代替数组的长度,编译器会根据元素个数自动推断数组的长度: var a =[...]int{2,3,4,5,6} b:=[...]float32{1.0,2,3.5} #另外一种定义方式:将索引为1和7的元素初始化, 这里用用...代替数组的长度,编译器自动推断数组长度 d:=[...]int{1:5,7:6}
多维数组
var c[3][5] int for i:=0;i<3;i++{ for j:=0;j<5;j++{ c[i][j]=i*j } }
数组的访问
a:=[5]int{1,2,3,4,5} for i:=0;i<5;i++{ fmt.println(i) }
数组的切片操作
a:=[...]int{1,3,4,6,7} b:=a[1:3] fmt.Println(b) # a[1]和a[2] # 结果打印[3 4] c:=a[:4] #a[0]到a[3]不包括a[4] fmt.Println(c) 结果打印:[1,3,4,6] d:=a[2:] 从a[2]到a[4] fmt.Println(d) 结果打印 [4,6,7]
数组切片是共享内存的,这里不会存在数据复制,实际上切片赋予的变量只是记录了从哪里切到哪里
补充
短变量声明::= 可在类型明确的地方代替var声明。
比如x:=10 等价于var x int=10
参考信息:
https://coolshell.cn/articles/8460.html#%E6%95%B0%E7%BB%84