| package main | |
| 
 | |
| import ( | |
|   "errors" | |
|   "fmt" | |
| ) | |
| 
 | |
| func doubler(v interface{}) (string, error) { | |
| 
 | |
|   if i, ok := v.(int); ok { | |
|     return fmt.Sprint(i * 2), nil | |
|   } | |
|   if s, ok := v.(string); ok { | |
|     return s + s, nil | |
|   } | |
|   return "", errors.New("unsupported type passed") | |
| 
 | |
| } | |
| 
 | |
| func main() { | |
| 
 | |
|   res, _ := doubler(5) | |
|   fmt.Println("5 :", res) | |
|   res, _ = doubler("yum") | |
|   fmt.Println("yum:", res) | |
|   _, err := doubler(true) | |
|   fmt.Println("true:", err) | |
| 
 | |
| }
 |