将值附加到 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中文网其他相关文章!