| // 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() |
| } |