将值附加到 Go 中映射内的数组
在 Go 中使用映射时,操作这些映射中的数组可能具有挑战性。本文提供了一个解决方案,解决将值附加到存储在映射内的数组的问题。
要理解该问题,请考虑以下代码:
type Example struct {
Id []int
Name []string
}
var MyMap map[string]Example
这里,MyMap 是将字符串映射到Example 结构体实例的映射。示例结构包含数组 Id 和 Name。目标是将值附加到这些数组。
执行此操作的初始尝试通常涉及调用示例结构上的方法并传递指针接收器以访问和修改数组。但是,直接将 Oferty.AppendExample(1, "SomeText") 的结果分配给 MyMap["key1"] 将不起作用,因为映射存储的是 Example 结构的副本,而不是结构本身。
解决办法在于修改代码如下:
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)
}
通过创建Example结构体的实例并在映射中存储对其的引用(使用指针类型),我们可以直接修改数组。 AppendOffer 方法对指向 Example 结构的指针进行操作,允许我们将值附加到数组。
此解决方案有效地将值附加到存储在 MyMap 中的 Example 结构内的数组。它提供了一种清晰简洁的方法来管理 Go 中映射内的数组。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3