* Prefer value semantics over pointer semantics if feasible * Have either pointer or value receivers, not both, for methods on a type * Have constants, global variables, and type definitions always at the top of the file, before functions and methods * Have public functions and method before private ones in the file. * constructors must be always the first functions in a file (before all the methods), immediately after type definitions. even if they're non-public.