Golang中如何遍历Map的键值对
Golang中如何遍历Map的键值对 在使用Map时,我得到了以下结果:
map: map[17:1]
map: map[8191:6]
map: map[8191:7]
map: map[8191:7]
map: map[17:2]
我需要从Map中分别提取8191键对应的值和17键对应的值,如下所示:
8191的结果:6,7,7
17的结果:1,2
如何实现这个需求?
// 此处应放置实现代码
抱歉,但我没有真正理解您的要求。
您能否在playground上编写一个小程序,展示您的输入数据以及您希望如何处理它,或者至少说明预期数据应该是什么样子(使用Go语法)?
如果我说错了请纠正我。 你最终需要类似这样的东西 所以,你需要事先将值存储在切片中,就像这样 示例代码链接
在你的代码中没有任何返回,只是进行了打印。
此外,由于你只展示了一个仅初始化了单个键值对并打印一次的代码片段,我不得不假设在每次迭代中之前的地图都会丢失。
基于这个假设,你无法对历史记录进行任何操作。
首先需要实现一个合适的历史记录机制。
不过我仍然不太明白你想要实现什么。
因此我再次询问,能否在合适的playground中展示你的输入和期望的输出。
再次强调,请使用规范的Go代码来描述你实际的数据和期望的数据,而不是使用那些无法说明任何问题的伪调试输出。
谢谢,
我创建了以下示例代码: https://play.golang.org/p/ln2lhcDQC24
我需要从中分别提取键8191和17的值,并计算这些值之间的差值。 例如: map: map[8191:0] map: map[8191:1] map: map[8191:2] map: map[8191:2]
map: map[17:1] map: map[17:2] map: map[17:7] map: map[17:9]
我需要获取所有8191键对应的值,并计算值0和1之间的差值(结果为1),以及值2和2之间的差值(结果为0)。同样地,我也需要对键17执行相同的操作。
你好
我认为将值存储为以下形式会更好:
map[uint16][]uint8
这样你就可以轻松查找17和8191并获取正确的值
https://play.golang.org/p/XKt_JSpC08g
package main
import (
"fmt"
)
func main() {
m := make(map[uint16][]uint8)
m[17] = append(m[17], 1)
m[8191] = append(m[8191], 6)
m[8191] = append(m[8191], 7)
m[8191] = append(m[8191], 7)
m[17] = append(m[17], 2)
fmt.Println(m)
fmt.Println(m[17])
fmt.Println(m[8191])
}
我的需求 - 我需要根据PID(包标识符)从视频中获取连续性计数器值,并验证PID是否具有正确的连续性计数器值。
m := make(map[uint16]uint8)
m[pid] = cc
fmt.Println("map:", m)
上述代码中,PID将返回8191和17的值,而CC(连续性计数器)将返回1、6、7、7等值。因此我创建了一个映射表来基于PID查找连续性计数器,这将返回以下结果: map: map[17:1] map: map[8191:6] map: map[8191:7] map: map[8191:7] map: map[17:2]
基于此,我需要根据PID来分离CC值。由于代码量很大,我无法完整发布。
谢谢!


