Golang 지도를 사용하여 "런타임 오류: nil 지도의 항목 할당" 해결
Go에서 지도 작업을 할 때 다음 사항을 확인하는 것이 중요합니다. 맵에 액세스하거나 값을 할당하기 전에 맵이 올바르게 초기화되었는지 확인하세요. "런타임 오류: nil 맵의 항목에 할당" 오류 메시지는 초기화되지 않은 맵에서 키-값 쌍을 수정하려고 시도하고 있음을 나타냅니다.
에 언급된 코드 조각을 분석해 보겠습니다. 질문:
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)) for _, name := range names { m["uid"][name] = T{cn: "Chaithra", street: "fkmp"} } fmt.Println(m) y, _ := yaml.Marshal(&m) fmt.Println(string(y)) }
코드 문제는 다음 줄에 있습니다.
m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}
여기, "m" 맵의 지정된 "uid" 및 "name" 키에 있는 값에 액세스하고 수정하려고 합니다. 그러나 "uid" 키에 대한 내부 맵을 초기화하지 않았습니다. 결과적으로 맵 "m"에는 빈 맵인 키가 하나만 있습니다. "m"uid"에서 내부 맵에 액세스하여 수정하려고 하면 "uid" 키가 초기화되지 않았기 때문에 런타임에서 nil 포인터 오류가 발생합니다.
이 문제를 해결하려면 다음을 수행해야 합니다. 키 "uid"에 액세스하고 수정하기 전에 해당 키에 대한 내부 맵을 초기화하십시오. 루프 앞에 다음 줄을 추가하면 됩니다.
m["uid"] = make(map[string]T)
이 줄은 값 없이 키 "uid"에 대한 내부 맵을 초기화하여 루프 중에 해당 키에 액세스하고 수정할 수 있도록 합니다.
이렇게 수정하면 코드가 성공적으로 실행되어 예상한 출력이 생성됩니다. 런타임 오류를 방지하려면 지도를 사용하기 전에 지도를 초기화하는 것이 중요합니다.
위 내용은 Golang '런타임 오류: nil 맵의 항목 할당' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!