亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中存儲/訪問嵌套數據 - 使用結構?

在 Go 中存儲/訪問嵌套數據 - 使用結構?

Go
郎朗坤 2022-01-17 16:42:58
我需要在我的 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


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號