Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 1 | // $G $F.go && $L $F.$A && ./$A.out |
| 2 | |
| 3 | // Copyright 2009 The Go Authors. All rights reserved. |
| 4 | // Use of this source code is governed by a BSD-style |
| 5 | // license that can be found in the LICENSE file. |
| 6 | |
Rob Pike | bf14ef6 | 2008-07-07 10:03:10 -0700 | [diff] [blame] | 7 | package main |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 8 | |
| 9 | const |
| 10 | a_const = 0 |
Russ Cox | 08ca30b | 2008-12-19 03:05:37 -0800 | [diff] [blame] | 11 | |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 12 | const ( |
| 13 | pi = /* the usual */ 3.14159265358979323; |
Robert Griesemer | e31ee76 | 2008-03-12 13:12:40 -0700 | [diff] [blame] | 14 | e = 2.718281828; |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 15 | mask1 int = 1 << iota; |
| 16 | mask2 = 1 << iota; |
| 17 | mask3 = 1 << iota; |
| 18 | mask4 = 1 << iota; |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 19 | ) |
| 20 | |
Russ Cox | 839a684 | 2009-01-20 14:40:40 -0800 | [diff] [blame] | 21 | type ( |
Robert Griesemer | e31ee76 | 2008-03-12 13:12:40 -0700 | [diff] [blame] | 22 | Empty interface {}; |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 23 | Point struct { |
Robert Griesemer | e31ee76 | 2008-03-12 13:12:40 -0700 | [diff] [blame] | 24 | x, y int; |
| 25 | }; |
| 26 | Point2 Point |
| 27 | ) |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 28 | |
Rob Pike | bf14ef6 | 2008-07-07 10:03:10 -0700 | [diff] [blame] | 29 | func (p *Point) Initialize(x, y int) *Point { |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 30 | p.x, p.y = x, y; |
Rob Pike | bf14ef6 | 2008-07-07 10:03:10 -0700 | [diff] [blame] | 31 | return p; |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 32 | } |
| 33 | |
| 34 | func (p *Point) Distance() int { |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 35 | return p.x * p.x + p.y * p.y; |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 36 | } |
| 37 | |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 38 | var ( |
| 39 | x1 int; |
| 40 | x2 int; |
| 41 | u, v, w float |
| 42 | ) |
| 43 | |
| 44 | func foo() {} |
| 45 | |
| 46 | func min(x, y int) int { |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 47 | if x < y { return x; } |
| 48 | return y; |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 49 | } |
| 50 | |
| 51 | func swap(x, y int) (u, v int) { |
| 52 | u = y; |
| 53 | v = x; |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 54 | return; |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 55 | } |
| 56 | |
| 57 | func control_structs() { |
Russ Cox | 5564504 | 2009-01-06 15:19:02 -0800 | [diff] [blame] | 58 | var p *Point = new(Point).Initialize(2, 3); |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 59 | i := p.Distance(); |
| 60 | var f float = 0.3; |
Robert Griesemer | e31ee76 | 2008-03-12 13:12:40 -0700 | [diff] [blame] | 61 | for {} |
| 62 | for {}; |
| 63 | for j := 0; j < i; j++ { |
| 64 | if i == 0 { |
| 65 | } else i = 0; |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 66 | var x float; |
Robert Griesemer | e31ee76 | 2008-03-12 13:12:40 -0700 | [diff] [blame] | 67 | } |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 68 | foo: // a label |
Robert Griesemer | 9bc7b08 | 2008-05-08 17:12:15 -0700 | [diff] [blame] | 69 | var j int; |
| 70 | switch y := 0; true { |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 71 | case i < y: |
Robert Griesemer | d2490e7 | 2008-03-19 15:45:07 -0700 | [diff] [blame] | 72 | fallthrough; |
Robert Griesemer | fcf5b15 | 2008-03-12 14:57:03 -0700 | [diff] [blame] | 73 | case i < j: |
| 74 | case i == 0, i == 1, i == j: |
| 75 | i++; i++; |
| 76 | goto foo; |
| 77 | default: |
| 78 | i = -+-+i; |
Rob Pike | 27fb2ab | 2008-06-06 12:57:00 -0700 | [diff] [blame] | 79 | break; |
Robert Griesemer | 18b829b | 2008-03-11 17:07:25 -0700 | [diff] [blame] | 80 | } |
| 81 | } |
Rob Pike | bf14ef6 | 2008-07-07 10:03:10 -0700 | [diff] [blame] | 82 | |
| 83 | func main() { |
| 84 | } |