Force a method to get the struct (the constructor way):
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
(you can export a thing in go with capitalizing the first letter of it)