我需要將 a 轉換struct為[]Tuple. 每個元組將表示到該結構的每個葉節點的路徑。例如:type inner struct { D int}type Example struct { A string B *inner C []inner}e := Example{ A: "a", B: &inner{ D: 0, }, C: []inner{ inner{D:0}, inner{D:1}, inner{D:2}, },}func toTuple(e *Example) []Tuple { // this function should return: // [ // Tuple{"A", "a"} // Tuple{"B", "D", "0"} // Tuple{"C", 0, "D", 0} // Tuple{"C", 1, "D", 1} // Tuple{"C", 2, "D", 2} // ]}有沒有什么方法可以做到這一點而不必手動指定每個元組?我想避免做類似的事情:tuples = append(tuples, Tuple{"A", e.A})......for i, v := range e.C { tuples = append(tuples, Tuple{"C", i, "D", v.D}}因為結構可能非常大,這會導致脆弱且容易出錯的代碼(例如,如果將新字段添加到結構中)。由于這是一個對性能敏感的應用程序,我想避免使用反射。有什么辦法可以做到這一點嗎?
1 回答

茅侃侃
TA貢獻1842條經驗 獲得超21個贊
你將不得不使用反射。我知道反射在性能方面表現不佳,但值得您花時間嘗試它并在您注銷它之前對其進行基準測試。
或者,您可以使用代碼生成 - 可能仍會使用反射,但會在代碼生成時輸出將一起編譯的 go 代碼,因此在運行時不會影響性能。
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報
0/150
提交
取消