| // Copyright 2009 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 ( |
| "container/vector"; // not needed |
| "utf8"; // not needed |
| Fmt "fmt" |
| ) |
| |
| |
| const /* enum1 */ ( |
| EnumTag0 = iota; |
| EnumTag1; |
| EnumTag2; |
| EnumTag3; |
| EnumTag4; |
| EnumTag5; |
| EnumTag6; |
| EnumTag7; |
| EnumTag8; |
| EnumTag9; |
| ) |
| |
| |
| const /* enum2 */ ( |
| a, b = iota*2 + 1, iota*2; |
| c, d; |
| e, f; |
| ) |
| |
| |
| type S struct {} |
| |
| |
| type T struct { |
| x, y int; |
| s string; |
| next_t *T |
| } |
| |
| |
| var ( |
| aa = 5; |
| u, v, w int = 0, 0, 0; |
| foo = "foo"; |
| fixed_array0 = [10]int{}; |
| fixed_array1 = [10]int{0, 1, 2}; |
| fixed_array2 = [...]string{"foo", "bar"}; |
| ) |
| |
| |
| var ( |
| // Unicode identifiers |
| ä, ö, ü, ƒ, ß int; |
| ) |
| |
| |
| func d0() { |
| var ( |
| a string; |
| b, c string; |
| d, e, f string; |
| g, h, i, j string; |
| k, l, m, n, o string; |
| ) |
| } |
| |
| |
| func f0(a, b int) int { |
| if a < b { |
| a = a + 1; // estimate |
| } |
| return b; |
| } |
| |
| |
| func f1(tag int) { |
| switch tag { |
| case |
| EnumTag0, EnumTag1, EnumTag2, EnumTag3, EnumTag4, |
| EnumTag5, EnumTag6, EnumTag7, EnumTag8, EnumTag9: break; |
| default: |
| } |
| } |
| |
| |
| func f2(tag int) { |
| type T struct {} |
| var x T |
| } |
| |
| |
| func f3(a *[]int, m map[string] int) { |
| println("A1"); |
| for i := range a { |
| println(i); |
| } |
| |
| println("A2"); |
| for i, x := range a { |
| println(i, x); |
| } |
| |
| println("A3"); |
| for i, x := range a { |
| println(i, x); |
| } |
| |
| println("M1"); |
| for i := range m { |
| println(i); |
| } |
| |
| println("M2"); |
| for i, x := range m { |
| println(i, x); |
| } |
| |
| println("M3"); |
| var i string; |
| var x int; |
| for i, x = range m { |
| defer Fmt.Println(i, x); |
| } |
| } |
| |
| |
| type I interface {} |
| |
| /* |
| func f4(x I) int { |
| switch tmp := x.(type) { |
| case S: return 1; |
| } |
| switch { |
| case t := x.(S): return 2; |
| } |
| return 0; |
| } |
| */ |
| |
| func main() { |
| // the prologue |
| for i := 0; i <= 10 /* limit */; i++ { |
| println(i); // the index |
| println(i + 1); // the index + 1 |
| println(i + 1000); // the index + 1000 |
| println(); |
| } |
| f3(&[]int{2, 3, 5, 7}, map[string]int{"two":2, "three":3, "five":5, "seven":7}); |
| // the epilogue |
| println("foo"); // foo |
| println("foobar"); // foobar |
| var x int; // declare x |
| } |