我需要在我的 go 代碼內部維護一些數據:一個嵌套多層深度的 ID,當提供父道具的名稱時可以訪問它。例如,如果用 JavaScript 編寫,我會這樣做:var data = { 1111: { la1: { lb1: 1343584765, lb2: 1545438458 }, la2: { lb1: 1263268535, lb2: 1468904679 } }, 2222: { la1: { lb1: 1645078365, lb2: 1457732458 }, la2: { lb1: 1682974682, lb2: 1782975685 } }}然后像這樣訪問(是的,頂部道具需要是一個整數):data[1111]['la1']['la2'] //gets 1343584765但我看不出如何用 Go 結構構建這個結構,而且我讀過的大多數東西都建議不要這樣做。我能看到的唯一另一種方法是在 Go 中使用此邏輯,但感覺很混亂,而且可能會變得更大,因此難以維護:func getVal( varA int, varB string, varC string,) int { if varA == 1111 { if varB == "la1" { if varC == "lb1" { return 1343584765 } if varC == "lb2" { return 1545438458 } } if varB == "la2" { if varC == "lb1" { return 1263268535 } if varC == "lb2" { return 1468904679 } } } if varA == 2222 { ....etc然后訪問:getVal(1111, "la1", "lb1") //gets 1343584765非常感謝任何可以幫助我的人!
1 回答

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
你處理問題的方式非常奇特。也許您已經知道這一點,但您可能不知道:使用 maps。
我用命名錯誤的類型做了一個例子(因為我不知道你的用例),我還把所有東西都變成了一個字符串來保持簡單。
type l3Map map[string]string
type l2Map map[string]l3Map
type l1Map map[string]l2Map
func main() {
data := l1Map{
"1111": l2Map{
"la1": l3Map{
"lb1": "1343584765",
"lb2": "1545438458",
},
},
}
fmt.Printf("%v\n", data["1111"]["la1"]["lb2"])
}
https://play.golang.org/p/daKjDbX8Ao
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消