Ad 2: Go nějak přidělává práci?
Ano. Nemá zapouzdření.
Encapsulation: the ability to restrict or provide access to data and the ability to tie behavior or methods with the data. For Go some of the salient features are:
* There are two levels of access - within the package alone, and public.
* If a field, type, or method starts with a capital letter it is exported outside the package and is public. If instead it starts with a small letter, it is visible only within the package.
* Exported/public items: MyStruct, MyMethod, MyField
* Items with package visibility: myStruct, myMethod, myField
* You can tie in methods/behavior to a type by defining functions associated with it. func (m my_type) my_func() int { }
* You cannot attach methods to a type if it is not defined in the local package.