You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
696 B
43 lines
696 B
// 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()
|
|
}
|