How composition and inheritance work for types | Smart Go