Todavía estoy desconcertado de por qué tenemos new
en Go.
Cuando quieres crear una instancia de una estructura, lo haces
t := Thing{}
y puede obtener un puntero a una nueva instancia haciendo
t := &Thing{}
Pero también existe esta posibilidad:
t := new(Thing)
Este último parece un poco ajeno al resto del lenguaje. &Thing{}
es tan claro y conciso como new(Thing)
y solo utiliza construcciones que a menudo usa en otros lugares. También es más extensible, ya que podría cambiarlo a &Thing{3}
o &Thing{Feets:7}
.
En mi opinión, tener una palabra clave complementaria 1 es costoso, hace que el lenguaje sea más complejo y se suma a lo que debe saber. Y podría enmascarar a los recién llegados lo que hay detrás de crear instancias de una estructura.
También hace una palabra más reservada.
Entonces, ¿cuál es el razonamiento detrás new
? ¿A veces es útil? ¿Deberíamos usarlo?
1 : Sí, sé que no es una palabra clave en el nivel de gramática, puede ocultarla , pero eso no cambia el hecho de que es, para el desarrollador razonable, una palabra reservada.