> 今天编写了map结构数据存储程序,map的key总数:22046个,通过for```range方法遍历map发现,遍历打印的结果与实际存储内容不符,主要是存储结果数量和值正确,打印出来的值少了。
- 以下是打印结果
```go
keys:0xE7A0 values:0x942E
keys:0xE9E6 values:0x6B92
keys:0xF5F2 values:0x8E9C
keys:0xF7F0 values:0x9EDF
======================= 以上使用range遍历结果 ====================
获取0xFE4E值:0xFA28
总数:22046
```
- 以下是存储数据结构示意
```go
0xF7F0 0x9EDF
...
0xFE4E 0xFA28
```
- 打印代码
```go
func PrintMap() {
lineCounter := 0
for k, v := range gbToUnicode {
fmt.Printf("keys:%s\tvalues:%s\n", k, v)
lineCounter ++
}
fmt.Println("======================= 以上使用range遍历结果 ====================")
fmt.Printf("获取0xFE4E值:%s\t总数:%d\n",gbToUnicode["0xFE4E"],lineCounter)
}
```
你的 统计数字 不是正确的吗?说明 for range 没有问题的, 瞧你这个帖子的标题取得名字吓人一跳呀。; 你遇到的问题就是 fmt.Printf() 函数,原因可能是(1)输出不及时(2)输出缓冲区的内容刷新太慢(3)输出缓冲区的内容被覆盖了(4)输出少是 Printf的输出问题,关人家 for range 底事。更不关人家map底事。
#2
更多评论