杂记-golang
1、在64位机器上, int的长度为8字节,等于int64长度, int32为4字节长度
2、修改切片len的值的方法:
切片的结构:
type Slice struct{ byte* array uintgo len uintgo cap } 注:来自雨痕的《go学习笔记》
func qq(s []int){
s = append(s, 10)
s = append(s, 11)
fmt.Println(s) //输出 1,2,10,11
}
func main(){
s := make([]int, 0, 10) //cap值需要大一点,表示分配的空间大小
s = append(s, 1)
s = append(s, 2) //添加两个元素
fmt.Println(s) //输出为 1,2
qq(s)
fmt.Println(s) //输出 1 ,2
p := unsafe.Pointer(&s) //取地址
f := unsafe.Pointer(uintptr(p) + uintptr(1*unsafe.Sizeof(int(0)))) //将偏移量移动8位,指向结构体中len的位置
*(*int)(f) = 4 //修改len的值为4
fmt.Println(s) //输出 1,2,3,4
}