Search code examples
gostructinitializationdefault-value

How to set default values in Go structs


There are multiple answers/techniques to the below question:

  1. How to set default values to golang structs?
  2. How to initialize structs in golang

I have a couple of answers but further discussion is required.


Solution

    1. Force a method to get the struct (the constructor way).

      From this post:

      A good design is to make your type unexported, but provide an exported constructor function like NewMyType() in which you can properly initialize your struct / type. Also return an interface type and not a concrete type, and the interface should contain everything others want to do with your value. And your concrete type must implement that interface of course.

      This can be done by simply making the type itself unexported. You can export the function NewSomething and even the fields Text and DefaultText, but just don't export the struct type something.

    2. Another way to customize it for you own module is by using a Config struct to set default values (Option 5 in the link). Not a good way though.