| // Copyright 2012 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| import ( | |
| "fmt" | |
| "math" | |
| ) | |
| func InterfaceExample() { | |
| var i interface{} | |
| i = "a string" | |
| i = 2011 | |
| i = 2.777 | |
| // STOP OMIT | |
| r := i.(float64) | |
| fmt.Println("the circle's area", math.Pi*r*r) | |
| // STOP OMIT | |
| switch v := i.(type) { | |
| case int: | |
| fmt.Println("twice i is", v*2) | |
| case float64: | |
| fmt.Println("the reciprocal of i is", 1/v) | |
| case string: | |
| h := len(v) / 2 | |
| fmt.Println("i swapped by halves is", v[h:]+v[:h]) | |
| default: | |
| // i isn't one of the types above | |
| } | |
| // STOP OMIT | |
| } | |
| func main() { | |
| InterfaceExample() | |
| } |