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分配内存。其第一个实参为类型,而非值。其返回值为指向*该类型的新分配的零值的指针

做了两件事情:

  1. 分配空间,存放数值
  2. 再分配一个空间,存放地址,变量指向地址空间
  1. num01 := 100
  2. fmt.Printf("num01的类型: %T, num01的值: %v, num01的地址: %v \n", num01, num01, &num01)
  3. num02 := new(int) // *int
  4. fmt.Printf("num02的类型: %T, num02的值: %v, num02的地址: %v \n", num02, num02, &num02)
  5. fmt.Printf("num02指针的真正的值: %v \n", *num02)
  6. name := new(string)
  7. fmt.Printf("name指针的真正的值: %q \n", *name)
  8. num01的类型: int, num01的值: 100, num01的地址: 0xc000014088
  9. num02的类型: *int, num02的值: 0xc0000140b0, num02的地址: 0xc000006030
  10. num02指针的真正的值: 0
  11. name指针的真正的值: ""