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