package main import "fmt" type dog struct { name string friend *dog } func newDog(name string) *dog { return &dog{name: name} } func (d *dog) describe() { if d.friend == nil { fmt.Printf("%s has no friend.\n", d.name) return } fmt.Printf("%s is friends with %s.\n", d.name, d.friend.name) } func main() { rex := newDog("Rex") lassie := newDog("Lassie") rex.describe() lassie.describe() rex.friend = lassie rex.describe() lassie.describe() rex.friend.name = "Lady" rex.describe() lassie.describe() }