mirror of
https://github.com/golang/go
synced 2024-11-21 14:04:41 -07:00
5b7562dd6f
cgo[1-4].go, go1.go couldn't be tested now (cgo[1-4].go can only be tested when cgo is enabled, go1.go contain a list of filenames in the current directory) R=golang-dev, alex.brainman, rsc CC=golang-dev https://golang.org/cl/6218048
45 lines
707 B
Go
45 lines
707 B
Go
// cmpout
|
|
|
|
// 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()
|
|
}
|