>백엔드 개발 >Golang >Go에서 지도 내의 배열에 값을 추가하는 방법은 무엇입니까?

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

DDD
DDD원래의
2024-11-03 21:58:02202검색

How to Append Values to Arrays Within Maps in Go?

Go의 지도 내에서 배열 추가 해제

Go에서 지도는 데이터를 구성하는 강력한 도구입니다. 그러나 해당 맵 내의 배열에 값을 추가하려고 하면 까다로울 수 있습니다. 가상 시나리오를 생각해 보십시오.

var MyMap map[string]Example

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

Puzzle Unveiled

코드 조각은 MyMap이라는 지도 내의 배열에 정수와 문자열을 추가하려고 시도합니다. 그러나 구현에는 중대한 오류가 있습니다.

MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")

여기서 Offerty는 정의되지 않았기 때문에 객체로 인식될 수 없습니다. 이 문제를 해결하려면 아래와 같이 맵과 연결하기 전에 예제 구조체의 인스턴스를 생성하세요.

obj := &Example{[]int{}, []string{}}
obj.AppendOffer(1, "SomeText")

참조, 복사 아님

또한, 코드 조각은 예제 구조체에 대한 참조가 아닌 복사본만 생성합니다. 맵 내의 구조체에 대한 포인터를 유지하려면:

MyMap = make(map[string]*Example)
MyMap["key1"] = obj

Solution in Sight

이러한 수정을 통해 수정된 코드는 맵 내의 배열에 값을 성공적으로 추가합니다. :

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)
}

이 솔루션은 맵 내의 원본 예제 구조체를 보존하므로 외부 범위에서 배열을 업데이트하고 수정할 수 있습니다.

위 내용은 Go에서 지도 내의 배열에 값을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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