1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package main import ( "fmt" ) func main() { s1 := make([]int, 5, 8) s1[0] = 100 s1[1] = 100 s1[2] = 200 s1[3] = 888 s1[4] = 999 //a1 := [...]int{1, 3, 5, 7, 9} // s1 = a1[3:] //s1 = a1[1:4] s2 := make([]int, 8, 10) s2[3] = 699 s2[4] = 799 // copy(s2, s1) // copy(s1, s2) s2 = append(s2, 9, 10, 11, 12) fmt.Printf("%p,%v,%d,%d\n", s1, s1, len(s1), cap(s1)) fmt.Printf("%p,%v,%d,%d", s2, s2, len(s2), cap(s2)) } |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/2046.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(4条)
append是扩展slice的容量,append之后、内存地址发生变化(所以本质上其实是新产生一个slice)!
slice截取时不包含被截取的数组的最后一位。
定义了slice的len之后,使用slieceName[i]的方式给slice赋值时,i不能大于len(slieceName),否则会报错。
即便cap(slieceName)大于slieceName[i],但是i大于len(slieceName)也不行