nuevo y maquillaje se utilizan para asignar memoria
var a int
fmt.Println(a)
var b string
b = "927"
fmt.Println(b)
//输出
//0
//927
Utilice los tipos básicos de sistema se pondrá por defecto de asignación de memoria tipos básicos tienen un valor por defecto en el momento de la creación
var a *string
*a = "927"
fmt.Println(a)
var m map[string]int
m["id"] = 927
fmt.Println(m)
//panic: runtime error: invalid memory address or nil pointer dereference
//[signal 0xc0000005 code=0x0 addr=0x0 pc=0x49dd4a]
//
//goroutine 1 [running]:
//main.main()
// E:/goworkspace/github.com/godemo/01/main.go:8 +0x2a
Si los tipos de puntero y de referencia no asignan memoria cuando el
pánico: error de ejecución: la dirección de memoria no válida o referencia a un puntero nulo
nuevo
La función se obtiene utilizando el nuevo tipo de un puntero, el valor del valor por defecto de este tipo.
nuevo nuevo (el tipo)
nueva nueva función con menos
var a = new(int)
fmt.Println(*a)
*a = 927
fmt.Println(*a)
//输出
//0
//927
hacer
también hacen para la asignación de memoria
para la división, la memoria el mapa y la creación de Chan
rebanada, mapa y tipo de referencia Chan está presente no es necesario para devolver un puntero a
make (tyep, tamaño)
var m = make(map[string]int,20)
m["id"] = 927
fmt.Println(m)
//输出
//map[id:927]
Hacer la diferencia entre lo nuevo y
1.new menos utilizados
2.make sólo por rebanada, mapa de asignación de memoria y Chan
3.new devuelve un tipo de puntero, hacen que este tipo de retorno es en sí