Go语言设计与实现 -- make和new

  • make的作用是初始化内置的数据结构,也就是前面提到的切片,哈希表和Channel
  • new的作用是根据传入的类型分配一块儿内存空间,并返回指向这块儿空间的指针

例如:

slice := make([]int, 0, 100)
hash := make(map[int]bool, 10)
ch := make(chan int, 5)

slice是一个包含data, cap, len的结构体reflect.SliceHeader

hash是一个指向runtime.hmap结构体的指针

ch是一个指向runtime.hchan结构体的指针

new稍微简单一点儿:

i := new(int)

var v int 
i := &v

这两种是完全等价的。它们都会创建一个指向int零值的指针。

你可能感兴趣的:(Go设计与实现,哈希算法,数据结构,算法)