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


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


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

}