package main import "fmt" type Base struct { id string } func (b *Base) Id() string { return b.id } func (b *Base) SetId(id string) { b.id = id } type Person struct { Base FirstName string LastName string } type Employee struct { Person salary float32 } func main() { idjb := Base{"007"} jb := Person{idjb, "James", "Bond"} e := &Employee{jb, 100000.} fmt.Printf("ID of our hero: %v\n", e.Id()) // Change the id: e.SetId("007B") fmt.Printf("The new ID of our hero: %v\n", e.Id()) } /* Output: ID of our hero: 007 The new ID of our hero: 007B */