>백엔드 개발 >Golang >Golang '런타임 오류: nil 맵의 항목 할당' 오류를 해결하는 방법은 무엇입니까?

Golang '런타임 오류: nil 맵의 항목 할당' 오류를 해결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-13 20:10:15516검색

How to Resolve the Golang

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.