【Go】new和make


  1. new是返回一个指向新分配了内存空间并初始化为零值的对象的指针

  1. make是返回一个新分配了内存并初始化的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
"fmt"
"reflect"
)

func main() {

// make
object := make([]int, 3)
fmt.Println(reflect.TypeOf(object)) // []int
fmt.Println(object) // [0 0 0]

// new
object2 := new(int)
fmt.Println(reflect.TypeOf(object2)) // *int
fmt.Println(object2) // 0xc00000a108
fmt.Println(*object2) // 0
}