mirror of
https://github.com/golang/go
synced 2024-11-12 01:00:22 -07:00
289a357104
Originally published on The Go Programming Language Blog, January 25, 2011. http://blog.golang.org/2011/01/json-and-go.html R=adg CC=golang-dev https://golang.org/cl/5846044
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()
|
|
}
|