現在、問題は、jsonファイルに構造体を保存してからjsonファイルから構造体を開くと、構造体のプロパティが少し変わったことです。エンコード/デコード後の構造の変更
構造体Nでは、AとBが同じJを指すことがあります。ただし、エンコード後にデコードすると、値の異なるJを指します。
これをエンコードする前に、true(期待値)が返されます。それをデコードした後、それは偽を返す(期待していない)
fmt.Println("is same pointer", n.A[0] == n.B[0])
これは起こるはずですか?この周りに道がありますか?ありがとう。それが予想され、文書化行動だ
type N struct {
A []*J
B []*J
C []*J
}
func (n *N) Save(name string) {
name = "radacted.json"
err := os.Remove(name)
file, err := os.Create(name)
defer file.Close()
if err != nil {
fmt.Println(err)
}
bytes, err := json.Marshal(n)
file.Write(bytes)
}
func Open(name string) *N {
bytes, err := ioutil.ReadFile("redacted.json")
if err != nil {
log.Fatal("decode error:", err)
}
var n NeuralNetwork
json.Unmarshal(bytes, &n)
return &n
}