首页  >  文章  >  后端开发  >  如何在 Go 中将值附加到映射内的数组?

如何在 Go 中将值附加到映射内的数组?

DDD
DDD原创
2024-11-02 02:53:30982浏览

How to Append Values to Arrays Inside Maps in Go?

将值附加到 Go 中映射内的数组

在 Go 中使用映射时,操作这些映射中的数组可能具有挑战性。本文提供了将值附加到存储在地图内的数组的问题的解决方案。

要理解该问题,请考虑以下代码:

<code class="go">type Example struct {
    Id []int
    Name []string
}
var MyMap map[string]Example</code>

这里,MyMap 是一个地图将字符串映射到 Example 结构的实例。示例结构包含数组 Id 和 Name。目标是将值附加到这些数组。

执行此操作的初始尝试通常涉及调用示例结构上的方法并传递指针接收器以访问和修改数组。但是,直接将 Oferty.AppendExample(1, "SomeText") 的结果分配给 MyMap["key1"] 是行不通的,因为映射存储的是 Example 结构的副本,而不是结构本身。

解决方案在于修改代码如下:

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

通过创建Example结构体的实例并在map中存储对其的引用(使用指针类型),我们可以直接修改数组。 AppendOffer 方法对指向 Example 结构的指针进行操作,允许我们将值附加到数组。

此解决方案有效地将值附加到存储在 MyMap 中的 Example 结构内的数组。它提供了一种清晰简洁的方法来管理 Go 中映射内的数组。

以上是如何在 Go 中将值附加到映射内的数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn