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

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

DDD
DDD原创
2024-11-03 21:58:02131浏览

How to Append Values to Arrays Within Maps in Go?

解开 Go 中地图内的数组附加

在 Go 中,地图是组织数据的强大工具。但是,当尝试将值附加到这些映射中的数组时,可能会变得很棘手。考虑一个假设的场景:

var MyMap map[string]Example

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

谜题揭晓

代码片段尝试将整数和字符串附加到名为 MyMap 的映射中的数组。然而,该实现包含一个严重错误:

MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")

这里,Offerty 无法被识别为对象,因为它从未被定义。要解决此问题,请在将示例结构体与地图关联之前创建一个实例,如下所示:

obj := &Example{[]int{}, []string{}}
obj.AppendOffer(1, "SomeText")

引用,而非复制

此外,代码片段仅创建示例结构的副本,而不是对其的引用。要维护指向映射内结构的指针:

MyMap = make(map[string]*Example)
MyMap["key1"] = obj

解决方案

通过这些修改,修改后的代码成功将值附加到映射内的数组:

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)
}

此解决方案保留了映射中的原始示例结构,从而可以从外部范围更新和修改其数组。

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

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