"런타임 오류: Nil Map의 항목 할당" 이해
Go에 내장된 맵 데이터 구조를 활용하려고 할 때 다음과 같은 문제가 발생할 수 있습니다. 두려운 "런타임 오류: nil 맵의 항목 할당"이 발생합니다. 이 오류는 nil(또는 초기화되지 않은) 맵에 존재하지 않는 키에 값을 할당하려는 시도에서 발생합니다.
특별한 경우 맵에서 YAML 파일을 생성하려고 합니다. 키는 "uid"를 나타내며 각 값은 개인에 대한 정보를 포함하는 맵입니다. 그러나 코드에서 런타임 오류가 발생했습니다.
해결 방법: 내부 맵 초기화
이 문제는 내부 맵("uid")이 먼저 초기화되지 않았기 때문에 발생합니다. 키에 값을 할당해 보세요(예: "kasi", "remya" 및 "nandan"). 이 문제를 해결하려면 for 루프 앞에 다음 줄을 추가하면 됩니다.
m["uid"] = make(map[string]T)
이 줄은 내부 맵을 초기화하고 이를 외부 맵(m)의 "uid" 키와 연결합니다. 이제 내부 맵 내의 키에 값을 안전하게 할당할 수 있습니다.
m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
세련된 코드
수정된 코드는 다음과 같습니다.
package main import ( "fmt" "gopkg.in/yaml.v2" ) type T struct { cn string street string } func main() { names := []string{"kasi", "remya", "nandan"} m := make(map[string]map[string]T, len(names)) m["uid"] = make(map[string]T) for _, name := range names { m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) }
이번 수정으로 더 이상 "런타임 오류: nil 맵의 항목 할당"이 발생하지 않습니다. 귀하의 코드는 원하는 구조의 YAML 파일을 성공적으로 생성합니다.
위 내용은 Go에서 '런타임 오류: Nil Map의 항목 할당'이 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!