2 回答

TA贡献2065条经验 获得超14个赞
修改数据而不复制数据的唯一方法是使用指针。
我对您所说的内容感到有些困惑,因为您的示例使用了结构并且您谈论了结构,但是您说您需要能够使用地图。无论哪种方式,DeepReflect 都适用于两者。这是您修改为使用指针的示例:
package main
import (
"fmt"
"reflect"
)
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("a:", a)
fmt.Println("A:", A)
fmt.Println("b:", b)
fmt.Println("B:", B)
fmt.Println(b == B)
fmt.Println(reflect.DeepEqual(b, B))
}
印刷:
a: {a <nil>}
A: {a <nil>}
b: {b 0x10436180}
B: {b 0x10436190}
false
true
你可以看到这篇文章对地图做同样的事情。
- 2 回答
- 0 关注
- 186 浏览
添加回答
举报