首页  >  文章  >  后端开发  >  如何将值附加到 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