- Go语言中的数组定义方式
var a = [3]int{1,2,3} //如果不赋值,默认初始化为0
b:=[3]int{1,2,3,4}
c :=[2][3]int{{1,2,3},{4,5,6}} //二维数组
d :=[...]int{1,2,3,4,5} //自动推导数组中的元素
- Go语言中的数组截取
a := [...]int{1,2,3,4,5,6,7}
a[1,2] //左闭右开区间
a[2,3]
a[1:len(a)]
a[:3]
- Go语言遍历数组(只有for循环)
用传统for
for i:=0;i<len(a);i++{
t.Log(a[i])
}
另一种方式
for idx,value := range a{
t.Log(idx,value) //idx是数组的索引,value为值 ,可以使用_替代idx,表示我不关心索引值
}
- Go语言中的切片定义方式
var s1 []int //和数组类似,但是不需要长度
s2 := make([]int,3,5) //3是长度,5是容量 可以用len(s2) cap(s2) 取值
- Go语言中切片赋值
s1 := []int{1,2,3,4}
var s2 []int
s2=append(s2,1) //给s2增加一个元素,为啥用append然后再赋值给s2呢,按照我们的正常思维方式,应该是append(s2,1) 但是切片是动态扩展容量的,当容量不够时,他会新申请一块连续的内存,并把值拷贝带新内存里,所以要再赋值给s2
- Go语言中的切片是一块共享的存储结构