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