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