数组的比较
1.必须数组的长度和元素都相同,数组才会相同
代码如下所示
func TestArrayInt(t *testing.T) {
var arr [3]int
arr1 := [4]int{1, 2, 3, 4}
arr3 := [...]int{1, 3, 4, 5}
arr1[1] = 5
t.Log(arr[1], arr[2])
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 _, e := range arr3 {
t.Log(e)
}
}
数组的切分
代码如下所示 1.切片没有到-1的这种写法
func TestArraySection(t *testing.T) {
arr3 := [...]int{1, 2, 3, 4, 5}
arr3_sec := arr3[3:]
// 编译错误
// arr3_sec := arr3[:-1]
t.Log(arr3_sec)
}
数组 vs 切片
1.数组的容量不会改变,切片的容量可以动态改变
2.切片的改变会改变原有数组的元素,切片的容量是开始位置到结尾
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[3])
s2 = append(s2, 1)
t.Log(s2[3])
}
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 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
q2 := year[3:6]
t.Log(q2, len(q2), cap(q2))
summer := year[5:8]
t.Log(summer, len(summer), cap(summer))
summer[0] = 100
t.Log(q2)
}