Todavía estoy desconcertado por el motivo por el que tenemos new
en Go.
Cuando quieras 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 me parece un poco extraño. &Thing{}
es tan claro y conciso como new(Thing)
y usa solo las construcciones que usas a menudo 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 la creación de instancias de una estructura.
También hace una palabra más reservada.
Entonces, ¿cuál es el razonamiento detrás de new
? ¿Es a veces útil? ¿Debemos usarlo?
1 : Sí, sé que no es una palabra clave a nivel gramatical, puede Cúbralo , pero eso no cambia el hecho de que es, para el desarrollador razonable, una palabra reservada.