builtin
built interfunc
1、len 求长度,string, array, slice, map, channel
2、new 用来分配内存,主要用来分配值类型,比如 int, float32, struct… 返回的是指针。
3、make 用来分配内存,主要用来分配引用类型,比如 chan, map, slice
func new
func new(Type) Type
内建函数new分配内存。其第一个实参为类型,而非值。其返回值为指向*该类型的新分配的零值的指针。
做了两件事情:
- 分配空间,存放数值
- 再分配一个空间,存放地址,变量指向地址空间
num01 := 100
fmt.Printf("num01的类型: %T, num01的值: %v, num01的地址: %v \n", num01, num01, &num01)
num02 := new(int) // *int
fmt.Printf("num02的类型: %T, num02的值: %v, num02的地址: %v \n", num02, num02, &num02)
fmt.Printf("num02指针的真正的值: %v \n", *num02)
name := new(string)
fmt.Printf("name指针的真正的值: %q \n", *name)
num01的类型: int, num01的值: 100, num01的地址: 0xc000014088
num02的类型: *int, num02的值: 0xc0000140b0, num02的地址: 0xc000006030
num02指针的真正的值: 0
name指针的真正的值: ""