我对初始化包含地图的结构的最佳方法感到困惑。运行此代码会产生panic: runtime error: assignment to entry in nil map:package maintype Vertex struct { label string} type Graph struct { connections map[Vertex][]Vertex} func main() { v1 := Vertex{"v1"} v2 := Vertex{"v2"} g := new(Graph) g.connections[v1] = append(g.coonections[v1], v2) g.connections[v2] = append(g.connections[v2], v1)}一个想法是创建一个构造函数,如本答案所示。另一个想法是使用一种add_connection可以在地图为空时初始化地图的方法:func (g *Graph) add_connection(v1, v2 Vertex) { if g.connections == nil { g.connections = make(map[Vertex][]Vertex) } g.connections[v1] = append(g.connections[v1], v2) g.connections[v2] = append(g.connections[v2], v1)}还有其他选择吗?只是想看看是否有一种普遍接受的方法来做到这一点。
3 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
代码(尤其是完全在您控制之下的代码)假设您正确初始化了数据结构是很常见的。在这种情况下通常使用结构文字
g := &Graph{
connections: make(map[Vertex][]Vertex),
}
- 3 回答
- 0 关注
- 202 浏览
添加回答
举报
0/150
提交
取消