Go에서 맵 조각을 생성할 때 'nil 맵의 항목 할당' 오류를 방지하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-05 16:23:02
원래의
593명이 탐색했습니다.

How to Avoid the

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿