1 回答
TA贡献1862条经验 获得超7个赞
基本上,您的Set
方法需要一个指针接收器才能更改结构的状态。
具有指针接收器的方法可以修改接收器指向的值。由于方法通常需要修改其接收者,因此指针接收者比值接收者更常见。
Get
还应该有一个指针接收器以保持一致性:
接下来是一致性。如果该类型的一些方法必须有指针接收者,其余的也应该有,所以无论该类型如何使用,方法集都是一致的。
这是您的代码的修复:
package main
import (
"fmt"
)
type Foo struct {
t map[string]interface{}
}
func (F *Foo) Set(ta map[string]interface{}) {
F.t = ta
}
func (F *Foo) Get() map[string]interface{} {
return F.t
}
func main() {
t := make(map[string]interface{})
t["t"] = "sf"
t["array"] = []int{1, 2, 3}
fmt.Println(t)
var f Foo
f.Set(t)
fmt.Println(f.Get()) //prints map[t:sf array:[1 2 3]]
f.t = t
fmt.Println(f.Get()) //prints map[t:sf array:[1 2 3]]
}
产出
map[t:sf array:[1 2 3]]
map[t:sf array:[1 2 3]]
map[t:sf array:[1 2 3]]
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报