Cómo establecer valores predeterminados en estructuras Go

Resuelto Prateek asked hace 8 años • 9 respuestas

Hay múltiples respuestas/técnicas para la siguiente pregunta:

  1. ¿Cómo establecer valores predeterminados para estructuras golang?
  2. Cómo inicializar estructuras en golang

Tengo un par de respuestas, pero se requiere más discusión.

Prateek avatar May 10 '16 17:05 Prateek
Aceptado

Una posible idea es escribir una función constructora separada.

//Something is the structure we work with
type Something struct {
     Text string 
     DefaultText string 
} 
// NewSomething create new instance of Something
func NewSomething(text string) Something {
   something := Something{}
   something.Text = text
   something.DefaultText = "default text"
   return something
}
vodolaz095 avatar May 10 '2016 10:05 vodolaz095
  1. Fuerza un método para obtener la estructura (la forma del constructor).

    De esta publicación :

    Un buen diseño es hacer que su tipo no se exporte, pero proporcionar una función de constructor exportada como NewMyType()en la que puede inicializar correctamente su estructura/tipo. También devuelva un tipo de interfaz y no un tipo concreto, y la interfaz debe contener todo lo que otros quieran hacer con su valor. Y su tipo concreto debe implementar esa interfaz, por supuesto.

    Esto se puede hacer simplemente haciendo que el tipo en sí no se exporte. Puede exportar la función NewSomething e incluso los campos Text y DefaultText, pero no exporte el tipo de estructura.

  2. Otra forma de personalizarlo para su propio módulo es utilizar una estructura de configuración para establecer valores predeterminados (Opción 5 en el enlace). Aunque no es una buena manera.

Prateek avatar May 30 '2016 09:05 Prateek