Golang非结构类型指针接收器

iva*_*sim 4 go

我创建了一个基于Golang net.IP类型的自定义类型.让我感到惊讶的是,使用指针接收器向我的自定义类型声明的方法无法修改接收器指向的值.

调用后u,此代码段中的变量仍然存在.如果我将自定义类型更改为具有IP字段的结构,并且使用指向结构的指针接收器定义方法,则可以修改IP.我错过了什么?可在此处找到可执行示例.nilu.defaultIP()

type userIP net.IP

func main() {
  var u *userIP
  u.defaultIP()
  fmt.Printf("%v\n", u) 
}

func (u *userIP) defaultIP() {
  defaultIP := userIP("127.0.0.1")
  u = &defaultIP
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*lan 5

u在设置它的值之前,您需要取消引用.

从你的例子中,改变

defaultIP := userIP("127.0.0.1")
u = &defaultIP
Run Code Online (Sandbox Code Playgroud)

*u = userIP("127.0.0.1")
Run Code Online (Sandbox Code Playgroud)

为您的示例更新和工作:https://play.golang.org/p/ycCLT0ed9F