aprendizaje de idiomas Go: nueva y hacer

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í

Publicado 11 artículos originales · ganado elogios 1 · vistas 1254

Supongo que te gusta

Origin blog.csdn.net/ZHOUAXING/article/details/105044524
Recomendado
Clasificación