diff options
author | Ondřej Surý <ondrej@sury.org> | 2012-03-26 16:50:58 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2012-03-26 16:50:58 +0200 |
commit | 519725bb3c075ee2462c929f5997cb068e18466a (patch) | |
tree | 5b162e8488ad147a645048c073577821b4a2bee9 /doc/progs/json2.go | |
parent | 842623c5dd2819d980ca9c58048d6bc6ed82475f (diff) | |
download | golang-upstream-weekly/2012.03.22.tar.gz |
Imported Upstream version 2012.03.22upstream-weekly/2012.03.22
Diffstat (limited to 'doc/progs/json2.go')
-rw-r--r-- | doc/progs/json2.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/doc/progs/json2.go b/doc/progs/json2.go new file mode 100644 index 000000000..6089ae671 --- /dev/null +++ b/doc/progs/json2.go @@ -0,0 +1,42 @@ +// 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() +} |