在GO语言中进行切片,通道和地图的赋值和直接赋值有什么区别

时间:2017-04-29 04:28:19

标签: go

我是新手,请查看此代码部分

a := make(map[string]string, 10)
a["name"] = "Blob"
// or
b := map[string]string{}
b["name"] = "Blob"
  

问题:

     
    

" make"在堆上分配内存?

         

" make"函数只为初始化操作添加一步?喜欢用C语言组合malloc和memset吗?

  

1 个答案:

答案 0 :(得分:4)

区别在于make(map[string]string, 10)为地图提供了容量提示,而复合文字map[string]string{}则没有。

在两种情况下都会在堆上分配映射。

make函数和复合文字一样分配和初始化对象。