我正在嘗試使用遞歸結構體,當我有多個結構體時,我可以將它們加在一起,創建一個嵌入這些結構體的新結構體。但是,我不確定正確的方法是什麼。如何將多個結構體加入到同一個結構體中
我已經在下面的代碼片段中進一步說明我的意思。
package main
import "fmt"
type Container struct {
F int
Collection []SubContainer
}
type SubContainer struct {
Key string
Value int
}
func main() {
commits := map[string]int{
"a": 1,
"b": 2,
"c": 3,
"d": 4,
}
sc := []SubContainer{}
c := []Container{}
count := 0
for k, v := range commits {
sc = append(sc, SubContainer{Key: k, Value: v})
count++
if len(sc) == 2 {
c = append(c, Container{Collection: sc, F: count})
sc = nil
}
}
for _, r := range c {
fmt.Println(r)
}
}
結果:
{2 [{a 1} {b 2}]}
{4 [{c 3} {d 4}]}
期望的結果:
{6 {2 [{a 1} {b 2}]} {4 [{c 3} {d 4}]}}
遊樂場鏈接:我有麻煩纏繞我的頭周圍https://play.golang.org/p/j6rbhgcOoT
一個需要注意的是,commits
長度可能會改變(我最初認爲我可以創建一個差異t父結構)。任何建議,將不勝感激...這樣做與遞歸結構正確的方法來完成這個?謝謝!
什麼樣的角色是'F'在這裏玩?如果它只是切片的長度,爲什麼不用一種方法計算呢?目前還不清楚你想要的結果是什麼。爲什麼'if len(sc)== 2'特例? 6,2和4在這裏代表什麼(它們與1,2,3和4有什麼關係)?你提到你想要遞歸,但是你的類型沒有遞歸。 (有關Go中遞歸數據結構的示例,請參閱https://stackoverflow.com/questions/37366219/golang-recursive-data-structures#37366490)。 –