When exploring nested maps in Golang, a series of code examples reveal apparent discrepancies:
func main() { var data = map[string]string{} data["a"] = "x" data["b"] = "x" data["c"] = "x" fmt.Println(data) }
func main() { var data = map[string][]string{} data["a"] = append(data["a"], "x") data["b"] = append(data["b"], "x") data["c"] = append(data["c"], "x") fmt.Println(data) }
func main() { var w = map[string]string{} var data = map[string]map[string]string{} w["w"] = "x" data["a"] = w data["b"] = w data["c"] = w fmt.Println(data) }
이 문제의 원인은 map 형의 0 값이 nil입니다. 0 값은 초기화되지 않았습니다. 는 런타임 패닉입니다. 데이터 맵을 초기화했지만 항목이 없습니다. data [ "a"]와 같이 색인을 지정하면 아직 "a"키 항목이 없으므로 색인화는 nil이라는 값 유형의 0 값을 반환합니다. 그러므로 data "a"에 대입하려고 하면 런타임 패닉이 됩니다. . (Go Playground에서 시도해보기):
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
위 내용은 Go의 중첩 맵이 직접 액세스할 때 런타임 패닉을 일으키지만 추가 또는 초기화를 사용할 때는 발생하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!