更改类型';通过Golang中的一种方法获得的基本价值
go类型的实例能否更改其基础值?多亏了a,我知道如果我的类型是结构,我可以 但是,我对更改基础类型的值很感兴趣。考虑这样一个小程序更改类型';通过Golang中的一种方法获得的基本价值,go,types,Go,Types,go类型的实例能否更改其基础值?多亏了a,我知道如果我的类型是结构,我可以 但是,我对更改基础类型的值很感兴趣。考虑这样一个小程序 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) } 我天真的假设
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()
中的值
但是,这不起作用。上面的程序仍然打印出“否”
对我关于go的错误假设和实现我想要做的任何技术都感兴趣。您正在为
f
分配一个新的指针值,而不是取消引用它
取消引用f
并指定一个新的字符串值:
func (f *Foo) ChangeMe() {
*f = Foo("Hello World")
}
您正在为
f
分配一个新指针值,而不是取消引用它
取消引用f
并指定一个新的字符串值:
func (f *Foo) ChangeMe() {
*f = Foo("Hello World")
}