go 不支持真正的“多维数组式” map 语法,但可通过 map[k]map[k]v 形式实现嵌套映射;需显式初始化每一层子映射,否则对未初始化的内层 map 赋值会引发 panic。
在 Go 中,不存在语法层面的“多维 map”或“递归 map”(如 map[string]map[string] 缺少值类型即非法),所有 map 必须明确声明键(key)与值(value)的完整类型。常见误区是省略内层 map 的值类型,例如:
// ❌ 错误:map[string]map[string] 缺少内层 value 类型,编译失败
type Table struct {
input map[string]map[string // 编译错误:missing type in map value
}
✅ 正确写法是为内层 map 指定完整的键值类型,例如 map[string]map[string]string,表示:外层 key 是 string,外层 value 是一个 map[string]string 类型的映射。