/* * output * s address: 0xc000010030 * s address: 0xc000010018 * s is [100 2 3] * ==change slice by reference== * t address: 0xc000010060 * t address: 0xc000010060 * t is [100 2 3 200 300] */
利用go build命令可以查看变量是否逃逸到heap上
1 2 3 4 5 6 7 8 9 10 11 12
package main
funcmain() { a := [10 * 1024 * 1024]byte{} println(&a)
b := [10*1024*1024 + 1]byte{} println(&b) }
// 执行命令 go build -gcflags="-m" slice_in_go.go // output: ./slice_in_go.go:7:2: moved to heap: b