标签:情况 结构体 传输 sky 类型 自我 hash 可访问性 hunk
slice的本质:结构体
type slice struct {
array unsafe.Pointer // 元素指针
len int // 长度
cap int // 容量
}
参考代码
package main
import(
"fmt"
)
func main(){
slice := []int{0,1,2,3,4,5,6,7,8,9}
s1 := slice[2:5] //切出来的数据,还是底层数据:slice
s2 := s1[2:6:7] //2,6,7都是索引值,切出来的数据,还是底层数据:slice
fmt.Println("s1:",s1,len(s1),cap(s1))
fmt.Println("s2:",s2,len(s2),cap(s2))
s2 = append(s2,100) // 增加的数据不会超过该切片的容量,会影响到s1和slice切片元素
s2 = append(s2,200) // 增加数据超过该切片的容量,自动复制新的位置,并且容量扩大原来的一倍
fmt.Println("s2:",s2,len(s2),cap(s2))
s1[2] = 20
fmt.Println("s2:",s2)
fmt.Println("s1:",s1)
fmt.Println("Slice:",slice) //下标为4和下标为8的值都被改变了
}
s1: [2 3 4] 3 8
s2: [4 5 6 7] 4 5
s2: [4 5 6 7 100 200] 6 10
s2: [4 5 6 7 100 200]
s1: [2 3 20]
Slice: [0 1 2 3 20 5 6 7 100 9]
共享:底层数据
学习资料:https://juejin.im/post/5ca2b75f51882543ea4b81c8#comment
标签:情况 结构体 传输 sky 类型 自我 hash 可访问性 hunk
原文地址:https://www.cnblogs.com/MyUniverse/p/11623654.html