1、go语言的map和c++中的map有什么区别?
go语言中的map是hash_table,和c++中unordermap类似的,而c++的中map的数据结构是红黑树,其key在map中是有序的。
2、go语言的中new和make的区别。
new是内建函数 其定义 func new(Type) *Type第一个参数是一个类型不是一个值,返回值是一个指向新分配类型的0值的指针
make也是内建函数,他的定义比new多了一个参数,返回值也不一样 func make(Type, size IntegerType) Type,其专门用来为slice,map和chan类型分配内存,其返回的类型是引用而不是指针,而返回值也依赖传入的类型
Slice: 第二个参数 size 指定了它的长度,它的容量和长度相同。
你可以传入第三个参数来指定不同的容量值,但必须不能比长度值小。
比如 make([]int, 0, 10)
Map: 根据 size 大小来初始化分配内存,不过分配后的 map 长度为 0,如果 size 被忽略了,那么会在初始化分配内存时分配一个小尺寸的内存
Channel: 管道缓冲区依据缓冲区容量被初始化。如果容量为 0 或者忽略容量,管道是没有缓冲区的
总结:
new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T)