有誰知道為什么這不起作用?我現(xiàn)在已經(jīng)絞盡腦汁大約 4 個小時了。我無法讓它工作。在我看來,我正在嘗試做同樣的事情兩次。我在一個結(jié)構中制作一個字段的地圖,然后我在另一個結(jié)構中的另一個字段上再次這樣做。如果我嘗試制作地圖。它失敗了:“無法分配給結(jié)構字段。Bet.Events [“one”]。地圖中的跑步者”。因此,如果我刪除 make,并嘗試分配它,我會得到:“分配給 nil 映射中的條目”https://play.golang.org/p/kRcXoyO-8FNvar Bet BetStructtype BetStruct struct { Events map[string]Event}type Event struct { Name string Runners map[int]Runner}type Runner struct { Name string}func main(){ // == THIS WORKS FINE == Bet.Events = make(map[string]Event) Bet.Events["one"] = Event{ Name: "first", } Bet.Events["two"] = Event{ Name: "second", } // == THIS DOES NOT WORK == Bet.Events["one"].Runners = make(map[int]Runner) Bet.Events["one"].Runners[0] = Runner{ Name: "Jeff", }}
1 回答

梵蒂岡之花
TA貢獻1900條經(jīng)驗 獲得超5個贊
map 的默認值是nil(之前或沒有 make(map))
您在此代碼中設置了默認值Runners:
Bet.Events["one"] = Event{
? ? Name: "first",
}
因此,Runners沒有明確定義并設置為nil.
結(jié)構是可變的,除了映射元素。(您無法重新初始化地圖
元素Bet.Events["one"],因為它不可尋址。
你需要做:
Bet.Events["one"] = Event{
? ? Name: "first",
? ? Runners: make(map[int]Runner),
}
- 1 回答
- 0 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消