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