无法分配给结构字段/分配给零映射中的条目

有谁知道为什么这不起作用?


我现在已经绞尽脑汁大约 4 个小时了。我无法让它工作。


在我看来,我正在尝试做同样的事情两次。我在一个结构中制作一个字段的地图,然后我在另一个结构中的另一个字段上再次这样做。


如果我尝试制作地图。它失败了:“无法分配给结构字段。Bet.Events [“one”]。地图中的跑步者”。


因此,如果我删除 make,并尝试分配它,我会得到:“分配给 nil 映射中的条目”


https://play.golang.org/p/kRcXoyO-8FN


var Bet BetStruct


type 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",

    }

}


回首忆惘然
浏览 82回答 1
1回答

梵蒂冈之花

map 的默认值是nil(之前或没有 make(map))您在此代码中设置了默认值Runners:Bet.Events["one"] = Event{    Name: "first",}因此,Runners没有明确定义并设置为nil.结构是可变的,除了映射元素。(您无法重新初始化地图元素Bet.Events["one"],因为它不可寻址。你需要做:Bet.Events["one"] = Event{    Name: "first",    Runners: make(map[int]Runner),}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go