make map时设置的size有什么用?和map如何转成json字符串?

在vscode编辑器里执行的脚本
json.Marshal得到的结果是什么情况,看不懂。
make map设置了2,有什么作用?map也不能cap。

1. 代码如下

var m = make(map[string]int, 2)
    m["a"] = 1
    m["b"] = 2
    m["d"] = 3
    m["e"] = 4
    m["f"] = 5
    fmt.Println(json.Marshal(m))

2. 结果如下

[123 34 97 34 58 49 44 34 98 34 58 50 44 34 100 34 58 51 44 34 101 34 58 52 44 34 102 34 58 53 125] <nil>
最佳答案
bData,err:=json.Marshal(m)
fmt.Println(string(bData),err)

你可以装个cast包,要是需要转字符串的话。
至于make,我理解的就是一个初始化分配。如果你不初始化分配的话,后面会频繁的申请内存,扩充map。

1年前 评论
sunjay (楼主) 1年前
sunjay (楼主) 1年前
滚球兽进化 (作者) 1年前
滚球兽进化 (作者) 1年前
sunjay (楼主) 1年前
cevin 1年前
滚球兽进化 (作者) 1年前
讨论数量: 18
bData,err:=json.Marshal(m)
fmt.Println(string(bData),err)

你可以装个cast包,要是需要转字符串的话。
至于make,我理解的就是一个初始化分配。如果你不初始化分配的话,后面会频繁的申请内存,扩充map。

1年前 评论
sunjay (楼主) 1年前
sunjay (楼主) 1年前
滚球兽进化 (作者) 1年前
滚球兽进化 (作者) 1年前
sunjay (楼主) 1年前
cevin 1年前
滚球兽进化 (作者) 1年前

Map: An empty map is allocated with enough space to hold the specified number of elements. The size may be omitted, in which case a small starting size is allocated.

翻译

地图:为空地图分配了足够的空间来容纳

指定的元素数。在这种情况下,可以省略尺寸

分配小的起始大小。

1年前 评论
sunjay (楼主) 1年前
AB (作者) 1年前
sunjay (楼主) 1年前
AB (作者) 1年前
AB (作者) 1年前

file

go源码我粗看一下,只有第5个有第二个参数,其他全部是忽略的。

1年前 评论
sunjay (楼主) 1年前

make加大小主要用在slice和chan上,在直接赋值的时候有限制作用

1年前 评论

没哈卵用,主要是给slice用的

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!