mirror of
https://github.com/golang/go
synced 2024-11-14 08:50:22 -07:00
43 lines
696 B
Go
43 lines
696 B
Go
|
// 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()
|
||
|
}
|