在 Go 中,映射的零值为 nil,表示未初始化的映射。将值存储在 nil 映射中会导致运行时恐慌。这可以在以下示例中看到:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" println(data) }
此代码将在运行时出现错误,并显示错误“分配给 nil 映射中的条目”。为了避免这个问题,请在给映射赋值之前显式初始化映射,如下所示:
func main() { var data = map[string]map[string]string{} data["a"] = make(map[string]string) data["a"]["w"] = "x" println(data) }
在此示例中,make(map[string]string)创建一个类型为map[string的新空映射]string.
初始化嵌套映射的另一种方法是使用复合文字:
func main() { var data = map[string]map[string]string{ "a": map[string]string{}, "b": map[string]string{}, "c": map[string]string{}, } data["a"]["w"] = "x" println(data) }
这两种方法都会正确初始化嵌套映射映射并允许存储值而不会导致运行时恐慌。
以上是如何在 Go 中安全使用嵌套映射并避免运行时恐慌?的详细内容。更多信息请关注PHP中文网其他相关文章!