我需要在我的 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 关注
- 188 浏览
添加回答
举报
0/150
提交
取消
