// +build ignore,OMIT package main import "fmt" type Point struct { x, y int } func (p Point) String() string { return fmt.Sprintf("(%d, %d)", p.x, p.y) } type Weekday int const ( Mon Weekday = iota Tue Wed Thu Fri Sat Sun ) var names = [...]string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"} func (d Weekday) String() string { // ... return names[d] } // Stringer START OMIT type Stringer interface { String() string } // Stringer END OMIT // main START OMIT func main() { var x Stringer x = Point{2, 3} fmt.Println("A", x.String()) x = Tue fmt.Println("B", x.String()) fmt.Println("C", Point{2, 3}) // fmt.Println knows about Stringer! fmt.Println("D", Tue) } // main END OMIT