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 關注
- 185 瀏覽
添加回答
舉報