我的目標是擁有一個鏈接的數據結構,這是一個引用另一個結構的結構,等等,這樣我就可以將它編碼到我的文件系統中,并且只要我需要它,就對其進行解碼,這樣我就可以恢復整個鏈接結構,內容相同。例子:我有這些鏈接結構:type A struct { b *B}type B struct { c []C}type C interface{}我這樣初始化它們:var c0 C = "foo"var c1 C = "bar"var b *B = &B{}b.c = make([]C, 2)b.c[0] = c0b.c[1] = c1var a A = A{}a.b = bfmt.Println(a)// {$b_address}fmt.Println(a.b)// {[c0_address,c1_address]}fmt.Println(a.b.c[0])// foofmt.Println(a.b.c[1])// bar我想知道如何對 A 進行編碼,將它保存到一個文件中,這樣我就可以對其進行解碼,得到相同的結果。地址不重要,重要的是內容。我已經嘗試過,但encoding/gob沒有成功:// encodef, err := os.Create("data.gob")if err != nil { fmt.Println(err) os.Exit(1)}enc := gob.NewEncoder(f)enc.Encode(a)f.Close()// decodevar a1 Af, err = os.Open("data.gob")if err != nil { fmt.Println(1, err) os.Exit(1)}dec := gob.NewDecoder(f)dec.Decode(&a1)if err != nil { fmt.Println(2, err) os.Exit(1)}f.Close()fmt.Println(a1)// {<nil>}// expected {$b_address}完整示例:http : //play.golang.org/p/2vxHR9BzNy有沒有辦法在不公開字段的情況下做到這一點?是否有任何現有的解決方案,所以我不需要重新發明輪子?
如何在 Go 中持久化或編碼鏈接的數據結構?
慕蓋茨4494581
2021-11-08 18:16:04