package main
import "fmt"
func double(x *int) {
*x += *x
x = nil
}
func main() {
var a = 3
double(&a)
fmt.Println(a, &a == nil) // 6 false
fmt.Println("======================")
p := &a
double(p)
fmt.Println(a, p == nil) //12 false
}
有疑问加站长微信联系(非本文作者)

为什么会不是false
&a是a的地址,为什么会等于nil?
double 内的x是一个*int类型,其本身也是一个值类型,当给予它 x=nil,在函数调用完毕后,x的值已释放,并不会变更局部变量的值。
简单来说就是double中的x=nil是不生效的。