Go 语言的切片
Posted 小伍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 语言的切片相关的知识,希望对你有一定的参考价值。
切片的声明
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)
// 长度3,容量5
t.Log(len(s2), cap(s2))
// 只能访问前三个元素,不能访问s2[3]
t.Log(s2[0], s2[1], s2[2])
s2 = append(s2, 1)
// 长度4,容量5
t.Log(len(s2), cap(s2))
// 可以访问前四个元素,不能访问s2[4]
t.Log(s2[0], s2[1], s2[2], 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) {
months := []string{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"}
Q2 := months[3:6]
//[...] 3 9
t.Log(Q2, len(Q2), cap(Q2))
summer := year[5:8]
t.Log(summer, len(summer), cap(summer))
summer[0] = "Unknow"
t.Log(Q2)
t.Log(months)
}
切片的比较
func TestSliceComparing(t *testing.T) {
a := []int{1, 2, 3, 4}
b := []int{1, 2, 3, 4}
// 切片不能进行比较
if a == b {
t.Log("equal")
}
}
以上是关于Go 语言的切片的主要内容,如果未能解决你的问题,请参考以下文章