【发布时间】:2019-01-01 15:27:42
【问题描述】:
go 类型的实例可以更改其基础值吗?感谢previous question,如果我的类型是结构,我知道我可以make my function's receiver a pointer and change struct fields。
但是,我对更改底层类型的值很感兴趣。考虑一个这样的小程序
type Foo string
func (f *Foo) ChangeMe() {
val := Foo("Hello World")
f = &val
//fmt.Println(*f)
}
func main() {
f := Foo("Nope")
f.ChangeMe()
fmt.Println(f)
}
我的天真假设是“好的,我创建了一个新的Foo("Hello World"),然后将f 指向它。由于接收器是一个指针(*Foo),这应该会改变main() 中的值。
但是,这不起作用。上面的程序仍然打印出“Nope”
对我对 Go 的错误假设以及实现我想做的任何技术感兴趣。
【问题讨论】: