【Duke】数组和切片 007 - PingPongGooo/GoFoundation GitHub Wiki
// 数组的声明
var a [3]int // 声明并初始化为默认0值
a[0] = 1
b := [3]int{1,2,3} // 声明同时初始化
c := [2][2]{{1,2},{3,4}} // 多维数组初始化\
func TestArrayInit(t *testing.T) {
var arr [3]int
t.Log(arr[1],arr[2]) // 0 0
arr1 := [4]int{1,2,3,4}
arr3 := [...]int{1,2,3,4}
t.Log(arr1[1])
t.Log(arr1,arr3)
}
数组的遍历
func TestArrayTravel(t *testing.T) {
arr3 := [...]int{1,3,4,5}
for i:=0; i<len(arr3);i++ {
t.Log(arr3[i])
}
for idx, e:= range arr3{
t.Log(idx,e)
}
for _,e:=range arr3{
t.Log(e)
}
}
// // 数组截取
// a[开始索引(包含),结束索引(不包含)]
// a := [...]int{1,2,3,4,5}
// a[1:2]
// a[1:3]
// a[1:len(a)]
// a[1:]
// a[:3]
func TestArraySection(t *testing.T){
arr3 := [...]int{1,2,3,4,5}
arr3_sec := arr3[3:]
t.Log(arr3_sec)
}
package slice_test
import "testing"
func TestSliceInit(t *testing.T) {
var s0 []int
t.Log(len(s0),cap(s0))
s0 = append(s0,1)
t.Log(len(s0),cap(s0))
s1 := []int{1,2,3,4}
t.Log(len(s1),cap(s1))
s2 := make([]int,3,5)
t.Log(len(s2),cap(s2))
t.Log(s2[0], s2[1], s2[2])
s2 = append(s2,1)
t.Log(s2[0], s2[1], s2[2],s2[3])
}
切片声明
var s0 []int s0 = append(s0,1)
s := []int{} s1 := []int{1,2,3} s2 := make([]int, 2,4)
// []type. len, cap // 其中len个元素会被初始化为默认零值,未初始化元素不可以访问。
func TestSliceGrowing(t *testing.T) {
s := []int{}
for i:=0; i < 10; i++{
s =append(s, i)
t.Log(len(s), cap(s))
}
}
切片共享存储结构
func TestSliceShareMemory(t *testing.T) {
year := []string{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}
Q2 := year[3:6]
t.Log(Q2)
t.Log(Q2,len(Q2),cap(Q2))
summer := year[5:8]
t.Log(summer,len(summer),cap(summer))
summer[0] = "Unknow"
t.Log(Q2)
}
数组 VS 切片
1. 容量是否可伸缩
2. 是否可以进行比较
数组可比较, 切片不可比较。只能和nil进行比较。