这是我正在尝试编写的现实世界代码的一部分。问题是Go复制了接口sibling所以我不能修改数据。但是,如果我改为使用指向接口的指针,那么相等的概念就失败了。我知道我可以使用DeapEquals,但不能在地图中使用。
package main
import (
"fmt"
)
type Q interface {
modify()
}
type P struct {
name string
sibling Q
}
func (x P) modify() {
x.name = "a"
}
func main() {
a := P{"a", nil}
A := P{"?", nil}
b := P{"b", a}
B := P{"b", A}
B.sibling.modify()
fmt.Println(B)
fmt.Println(b == B)
}
如何让 Go 允许我修改接口数据本身而不复制它和修改副本?
似乎这些在结构上是互斥的:
我需要能够使用地图
我需要能够使用方法修改接口数据
翻翻过去那场雪
相关分类