>  기사  >  백엔드 개발  >  객체 참조를 유지하면서 Go의 맵 내 배열에 값을 어떻게 추가합니까?

객체 참조를 유지하면서 Go의 맵 내 배열에 값을 어떻게 추가합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 21:28:29902검색

How do you append values to arrays within a map in Go while preserving object references?

Go에서 맵 내 배열에 값 추가

맵 내 배열에 값을 추가하려고 하면 참조를 설정하는 데 어려움이 발생할 수 있습니다.

Go에서 다음 코드는 예제 구조체에 값을 추가하려고 시도합니다.

<code class="go">var MyMap map[string]Example 

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

package main


import (
  "fmt"
)


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

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

var MyMap map[string]Example

func main() {
   MyMap = make(map[string]Example)
   MyMap["key1"] = Oferty.AppendExample(1,"SomeText")
   fmt.Println(MyMap)
}</code>

그러나 이 코드는 여러 가지 이유로 올바르지 않습니다.

  • 초기화 오류: Oferty는 정의되지 않은 변수입니다.
  • 인스턴스 생성: 맵에 추가하기 전에 예제의 인스턴스를 생성해야 합니다.
  • 지도 참조 문제: 지도 MyMap은 복사본이 아닌 예제 인스턴스에 대한 참조를 포함해야 합니다.

다음 수정된 코드는 이러한 문제를 해결합니다.

<code class="go">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 := &amp;Example{[]int{}, []string{}}
    obj.AppendOffer(1, "SomeText")
    MyMap = make(map[string]*Example)
    MyMap["key1"] = obj
    fmt.Println(MyMap)
}</code>

수정된 코드:

  • Example(obj)의 인스턴스는 지도에 추가되기 전에 생성됩니다.
  • MyMap 지도에는 다음에 대한 참조가 포함되어 있습니다. 포인터를 사용하는 예시 인스턴스(*Example).
  • AppendOffer 메소드는 예시 인스턴스의 배열 필드에 값을 추가하는 데 사용됩니다.

이러한 수정 사항을 구현하면 코드가 올바르게 추가됩니다. 객체 참조를 유지하면서 맵 내의 배열에 값을 추가합니다.

위 내용은 객체 참조를 유지하면서 Go의 맵 내 배열에 값을 어떻게 추가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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