"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 맵 내부의 배열에 값을 추가하는 방법은 무엇입니까?

Go에서 맵 내부의 배열에 값을 추가하는 방법은 무엇입니까?

2024년 11월 21일에 게시됨
검색:761

How to Append Values to Arrays Inside Maps in Go?

Go에서 지도 내 배열에 값 추가

Go에서 지도 작업을 할 때 해당 지도 내에서 배열을 조작하는 것이 어려울 수 있습니다. 이 문서에서는 맵 내부에 저장된 배열에 값을 추가하는 문제에 대한 솔루션을 제공합니다.

문제를 이해하려면 다음 코드를 고려하세요.

type Example struct {
    Id []int
    Name []string
}
var MyMap map[string]Example

여기에서 MyMap은 문자열을 예제 구조체의 인스턴스에 매핑하는 맵입니다. 예제 구조체에는 배열 Id 및 Name이 포함되어 있습니다. 목표는 이러한 배열에 값을 추가하는 것입니다.

이 작업을 수행하려는 초기 시도에는 종종 예제 구조체에 대한 메서드를 호출하고 포인터 수신기를 전달하여 배열에 액세스하고 수정하는 작업이 포함됩니다. 그러나 Oferty.AppendExample(1, "SomeText")의 결과를 MyMap["key1"]에 직접 할당하는 것은 지도가 구조체 자체가 아닌 예제 구조체의 복사본을 저장하기 때문에 작동하지 않습니다.

해결책은 다음과 같이 코드를 수정하는 것입니다:

package main

import "fmt"

type Example struct {
    Id []int
    Name []string
}

func (data *Example) AppendOffer(id int, name string) {
    data.Id = append(data.Id, id)
    data.Name = append(data.Name, name)
}

var MyMap map[string]*Example

func main() {
    obj := &Example{[]int{}, []string{}}
    obj.AppendOffer(1, "SomeText")
    MyMap = make(map[string]*Example)
    MyMap["key1"] = obj
    fmt.Println(MyMap)
}

예제 구조체의 인스턴스를 생성하고 이에 대한 참조를 맵에 저장함으로써(포인터 유형 사용) 배열을 직접 수정할 수 있습니다. AppendOffer 메서드는 예제 구조체에 대한 포인터에서 작동하므로 배열에 값을 추가할 수 있습니다.

이 솔루션은 MyMap에 저장된 예제 구조체 내의 배열에 값을 효과적으로 추가합니다. Go에서 지도 내부의 배열을 관리하는 명확하고 간결한 접근 방식을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3