初始化结构 GO 内的多层嵌套映射

问题描述

我是 golang 的新手,对一般的编码有点陌生,我一直在解决这个问题。我找到了多个关于如何使用两层地图执行此操作的示例,但没有一个可以很好地扩展到三层。我有一些代码看起来像这样,嵌套映射作为结构的一部分。

type someStruct struct { 

     // some other stuff 

     myMap map[int]map[int]map[int]string 

} 

func (s someStruct) aFunction() {

    //need logic to initialize the map 

    s.myMap[1][2][3] = "string" 

} 
    

显然,如果没有初始化地图,这会引发恐慌!分配给地图中的 nil 条目。我需要一种方法来在使用它的 func 中初始化嵌套映射。或者在另一个易于调用的 func 中。

解决方法

您可以使用文字来初始化地图:

   s.myMap=map[int]map[int]map[int]string{1:map[int]map[int]string{2:map[int]string{3:"string"}}}

这是语法的扩展:

mapValue=map[type1]type2{type1Value:type2Value}