Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // print.go | |
| package main | |
| import ( | |
| "os" | |
| "strconv" | |
| ) | |
| type Stringer interface { | |
| String() string | |
| } | |
| type Celsius float64 | |
| func (c Celsius) String() string { | |
| return strconv.FormatFloat(float64(c),'f', 1, 64) + " °C" | |
| } | |
| type Day int | |
| var dayName = []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"} | |
| func (day Day) String() string { | |
| return dayName[day] | |
| } | |
| func print(args ...interface{}) { | |
| for i, arg := range args { | |
| if i > 0 {os.Stdout.WriteString(" ")} | |
| switch a := arg.(type) { // type switch | |
| case Stringer: os.Stdout.WriteString(a.String()) | |
| case int: os.Stdout.WriteString(strconv.Itoa(a)) | |
| case string: os.Stdout.WriteString(a) | |
| // more types | |
| default: os.Stdout.WriteString("???") | |
| } | |
| } | |
| } | |
| func main() { | |
| print(Day(1), "was", Celsius(18.36)) // Tuesday was 18.4 °C | |
| } | |
| // Tuesday was 18.4 °C |