列表为go内置的所有数据类型,包括基本数据类型,例如int,byte,rune,string;也有引用数据类型,例如slice,map,channel等;还有interface,函数等
如果想获取任何类型变量的存储地址,使用&(取地址符)
1 | str := "you are my sunshine" |
输出:
1 | addr:0xc0000621c0 |
字符串一旦创建不可修改,所以如果要修改字符串,可先将其转换成 []rune 或 []byte,完成后再转换为 string。⽆论哪种转换,都会重新分配内存,并复制字节数组(本质上,修改后的字符串已不是原始的字符串,他们彼此占用了独立的内存空间)。
1 | s := "abcd" |
输出:
1 | b:Abcd |
Go 函数返回局部变量指针是安全的,不同于c/c++,编译器会根据需要,将该局部变量的内存分配在GC Heap上
1 | func main(){ |
输出:
1 | local var addr:0xc000094000 |