Nil 맵 오류의 항목에 할당: 맵 조각 만들기
맵 조각을 만들려고 할 때 메모리가 어떻게 작동하는지 이해하는 것이 중요합니다. Go에서는 할당되고 액세스됩니다. nil 맵 항목에 값을 할당하려고 하면 "nil 맵의 항목에 할당"이라는 런타임 오류가 발생합니다.
제공된 코드에서 목표는 두 개의 인덱스가 포함된 각 맵이 있는 맵 조각을 만드는 것입니다. : "ID" 및 "투자자". 초기 접근 방식에서는 맵 배열을 만드는 것이 포함되었습니다.
invs := make([]map[string]string, length)
그러나 invs 슬라이스에 처음에는 nil 맵이 포함되어 있기 때문에 이로 인해 패닉 오류가 발생했습니다. 이 문제를 해결하려면 올바른 선언은 다음과 같습니다.
a := make([]map[string]int, 100)
빈 맵으로 슬라이스의 각 요소를 초기화합니다.
다음으로 코드는 맵을 반복하고 데이터로 채웁니다.
for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] }
이 접근 방식은 슬라이스의 각 항목에 대한 맵을 생성합니다. 그러나 지도를 채우는 더 간결한 방법은 복합 리터럴을 사용하는 것입니다.
invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}
이미 채워진 지도를 생성합니다.
보다 관용적인 접근 방식을 위해 구조체를 사용하여 투자자를 나타내는 것을 고려해 보세요.
type Investor struct { Id int Name string }
그런 다음 투자자 조각 만들기:
a := make([]Investor, 100) for i := 0; i < 100; i++ { a[i] = Investor{Id: i, Name: "John" + strconv.Itoa(i)} }
이 접근 방식은 투자자 데이터를 표현하는 더 명확하고 유형이 안전한 방법을 제공합니다.
위 내용은 Go에서 맵 조각을 생성할 때 'nil 맵의 항목 할당' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!