我不明白为什么在为另一个对象分配指针时,指针接收器不会更新。下面是一个示例:
获取是导出的获取器,
获取未导出,
我希望 Get() 返回一个指向对象的指针,该指针包含在由字符串索引的指针映射中。
我不明白为什么get()方法的指针接收器没有更新。
我每次都尝试了不同的策略,结果几乎相同:取消引用,在变量声明中使用&而不是*...
去游乐场在这里: https://play.golang.org/p/zCLLvucbMjy
有什么想法吗?谢谢!
package main
import (
"fmt"
)
type MyCollection map[string]*MyType
type MyType struct {
int
}
var collection MyCollection
func Get(key string) *MyType {
var rslt *MyType
// rslt := &MyType{}: gives almost the same result
rslt.get(key)
fmt.Println("rslt:", rslt) // Should print "rslt: &{2}"
return rslt
}
func (m *MyType) get(key string) {
m = collection[key]
// *m = collection[key] : cannot use collection[key] (type *MyType) as type MyType in assignment
fmt.Println("get m:", m) // Should print "get m: &{2}"
}
func main() {
collection = make(map[string]*MyType)
collection["1"] = &MyType{1}
collection["2"] = &MyType{2}
m := &MyType{1}
m = Get("2")
fmt.Println("final m", m) // Should print "final m: &{2}"
}
婷婷同学_
相关分类