问题标签 [go-map]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
118 浏览

go - 使用该结构中的内部函数检查映射中是否存在值

我有这个结构

我希望有一种方法可以在该地图中找到一个值,就像这样。

但在这一行:

我收到此错误:

分配计数不匹配:2=1。

有很多链接表明我们可以使用该行检查地图中是否存在值,我不知道发生了什么。我究竟做错了什么?

提前致谢。

0 投票
1 回答
745 浏览

go - 如何将地图作为值传递?

我的 Golang 应用程序中有一些演员需要两张地图才能完成工作。这些地图是由一些密集的数据库事务生成的,所以我不想在每个演员中都这样做,因此我将地图生成与演员分开。

我在使用这种方法时遇到的问题是,如果我将这些映射传递给它们中的每一个,它们会通过引用传递,这会在我同时写入和读取时引起恐慌。

我的解决方案是每次将这些地图传递给新的 Actor 时对这些地图进行元组和解组,但我想知道是否有更好的解决方案。

0 投票
2 回答
1335 浏览

go - 在循环中同时从 Go 中的地图中删除多个值

我正在尝试从我的map[string][]interface{}

我正在使用该strings.Split函数来分隔我希望删除的每个值,然后循环遍历它们。

我已经设法得到它,所以我可以删除索引值 0 和 1,但是,1,2 会删除索引值 1,但索引 2 会出错。

我还设法让它删除一个值

我的想法是,如果我可以让它只删除一个值(我输入的任何索引,包括第一个和最后一个索引),那么我可以使用循环来循环并删除其余的。

一切都存储在下面:

功能

它将您希望删除的值作为参数(和键,但功能齐全)

问题所在的代码块

循环从地图切片的末尾开始,因此,例如,当您删除索引值 5 时,4 仍然是 4。而如果我反过来,如果我删除 5,则 6 将变为索引 5。所以 5,6 是删除实际上意味着 5,7 被删除。

我已经尝试了两个循环,如下所示:

当然,以下不起作用的原因是因为您在循环之前(在 func 主体中)获得了长度,该长度在每次迭代后都不会改变。

下面的代码是删除输入的索引(这适用于单个值)

我希望'2,1'的输出删除索引1和2,但实际输入是它只是删除索引1。

0 投票
1 回答
594 浏览

go - 写入具有多个 goroutine 的互斥映射是否比一个更快?为什么?

我有一个 SyncMap 定义如下:

而且,现在我使用两种方式写入它,一种 goroutine 和多个带有互斥锁的 goroutine。代码如下:

输出如下:

尝试服务时间,t1 总是比 t2 快。所以,正如标题所说,我的问题。

我能理解这是由于互斥锁的消耗吗?这种情况下的 SyncMap 或 go 包中的 sync.Map 只是为了编写安全的 goroutine 而设计的,而不是为了效率?在使用多个 goroutine 编写 map 时,有什么方法可以提高效率吗?

谢谢~

0 投票
2 回答
304 浏览

pointers - go中form参数为map时,传入的是什么?

当形参为map时,直接给形参赋值并不能改变实参,但是如果给形参添加新的key和value,也可以看到函数外的实参。这是为什么?

看不懂下面代码的输出值,形参和实参不一样。

我想知道参数是值还是指针。

0 投票
1 回答
227 浏览

arrays - 如何在 golang 中编写具有嵌套递归数据的结构

我有如下数据

该列表可能会继续增长。我正在尝试找到一个合适的结构来提供数据并返回到 A http responsewriter。

我拥有的结构。

但是上面的结构已经预定义了“Toyota”“Honda”

我正在寻找一种只使用一个或两个结构来表示数据结构的方法。提前致谢。

0 投票
0 回答
130 浏览

go - 迭代和更新 map[string]interface{} 值的属性

我们有一个如下所示的接口对象,数据如下所示

[地图[com.org.exts.criteria.model.Sourceemployee:map[active:true ids:map[com.org.exts.criteria.model.employee.ids:map[alternateIds:alternateSubId:map[string:SomeValuestring] IDnumber: somefiledAssignedIds: familyId:map[int:111] MyAccountIds: ABCNumbers: OldIds: nrtNumbers: GHTNumb: Somefiledx: Somefiledx: Somefiledz:map[string:OldId1] somefiled779: someIds: somenumberfiled: someoriginid: someconsumerids:]

我可以将接口转换为 map[string]interface{},但是当我们这样做时,结构会嵌套在地图中。遍历接口对象中的所有属性最好的方法是什么?

我们可以将接口转换为上面代码中提到的 map[string]interface{},但无法动态导航与地图嵌套。尝试动态遍历地图中的每个属性并能够对其进行更新。

0 投票
1 回答
298 浏览

go - 如何知道 2 个 go 地图是否引用相同的数据

Go 地图是对内部数据的引用。这意味着当“复制”地图时,它们最终会共享相同的参考,从而编辑相同的数据。这与拥有另一个具有相同项目的地图有很大不同。但是,我找不到任何方法来区分这两种情况。

有什么解决方案吗?

0 投票
1 回答
92 浏览

json - 如何在golang中将从result(var)中获得的数据注入result1(var)

  1. terraform.tfstate 是输入文件,packageservicelist.tf.json 是输出文件。
  2. 两者都转换为地图文件
  3. 我遍历的数据存储在结果中,我想将数据从结果复制到结果1。
  4. Will Write 操作在这里有效。如果是 。如何 ?
0 投票
3 回答
1350 浏览

go - 在 Go 中有没有办法将结构映射转换为结构切片

我必须将结构映射转换为 Golang 中的结构切片,即下面指定的源结构到目标结构。

我指的是地图结构包(“github.com/mitchellh/mapstructure”)。从源转换为目标的一种方法是在源实例中迭代所有子类别,然后是类别,并使用 mapstructure.Decode() 单独转换每个子类别。

有没有使用mapstructure包的直接方法,其中我使用NewDecoder和DecoderConfig.DecodeHook创建一个自定义解码器钩子,每当我遇到源作为结构的映射和目标作为结构的切片时,我都会在DecodeHookFunc函数中处理它。

mapstructure 的相关文档 https://godoc.org/github.com/mitchellh/mapstructure#NewDecoder