| // +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 |