杂记-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
}

  

posted @ 2018-05-20 21:21  游鸿  阅读(110)  评论(0编辑  收藏  举报