2008-03-11 18:07:25 -06:00
|
|
|
// $G $F.go && $L $F.$A && ./$A.out
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
2008-07-07 11:03:10 -06:00
|
|
|
package main
|
2008-03-11 18:07:25 -06:00
|
|
|
|
|
|
|
const
|
|
|
|
a_const = 0
|
2008-12-19 04:05:37 -07:00
|
|
|
|
2008-03-11 18:07:25 -06:00
|
|
|
const (
|
|
|
|
pi = /* the usual */ 3.14159265358979323;
|
2008-03-12 14:12:40 -06:00
|
|
|
e = 2.718281828;
|
2008-03-12 15:57:03 -06:00
|
|
|
mask1 int = 1 << iota;
|
|
|
|
mask2 = 1 << iota;
|
|
|
|
mask3 = 1 << iota;
|
|
|
|
mask4 = 1 << iota;
|
2008-03-11 18:07:25 -06:00
|
|
|
)
|
|
|
|
|
2009-01-20 15:40:40 -07:00
|
|
|
type (
|
2008-03-12 14:12:40 -06:00
|
|
|
Empty interface {};
|
2008-03-11 18:07:25 -06:00
|
|
|
Point struct {
|
2008-03-12 14:12:40 -06:00
|
|
|
x, y int;
|
|
|
|
};
|
|
|
|
Point2 Point
|
|
|
|
)
|
2008-03-12 15:57:03 -06:00
|
|
|
|
2008-07-07 11:03:10 -06:00
|
|
|
func (p *Point) Initialize(x, y int) *Point {
|
2008-06-06 13:57:00 -06:00
|
|
|
p.x, p.y = x, y;
|
2008-07-07 11:03:10 -06:00
|
|
|
return p;
|
2008-03-12 15:57:03 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func (p *Point) Distance() int {
|
2008-06-06 13:57:00 -06:00
|
|
|
return p.x * p.x + p.y * p.y;
|
2008-03-12 15:57:03 -06:00
|
|
|
}
|
|
|
|
|
2008-03-11 18:07:25 -06:00
|
|
|
var (
|
|
|
|
x1 int;
|
|
|
|
x2 int;
|
|
|
|
u, v, w float
|
|
|
|
)
|
|
|
|
|
|
|
|
func foo() {}
|
|
|
|
|
|
|
|
func min(x, y int) int {
|
2008-06-06 13:57:00 -06:00
|
|
|
if x < y { return x; }
|
|
|
|
return y;
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func swap(x, y int) (u, v int) {
|
|
|
|
u = y;
|
|
|
|
v = x;
|
2008-06-06 13:57:00 -06:00
|
|
|
return;
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func control_structs() {
|
2009-01-06 16:19:02 -07:00
|
|
|
var p *Point = new(Point).Initialize(2, 3);
|
2008-03-12 15:57:03 -06:00
|
|
|
i := p.Distance();
|
|
|
|
var f float = 0.3;
|
2008-03-12 14:12:40 -06:00
|
|
|
for {}
|
|
|
|
for {};
|
|
|
|
for j := 0; j < i; j++ {
|
|
|
|
if i == 0 {
|
|
|
|
} else i = 0;
|
2008-06-06 13:57:00 -06:00
|
|
|
var x float;
|
2008-03-12 14:12:40 -06:00
|
|
|
}
|
2008-03-12 15:57:03 -06:00
|
|
|
foo: // a label
|
2008-05-08 18:12:15 -06:00
|
|
|
var j int;
|
|
|
|
switch y := 0; true {
|
2008-03-12 15:57:03 -06:00
|
|
|
case i < y:
|
2008-03-19 16:45:07 -06:00
|
|
|
fallthrough;
|
2008-03-12 15:57:03 -06:00
|
|
|
case i < j:
|
|
|
|
case i == 0, i == 1, i == j:
|
|
|
|
i++; i++;
|
|
|
|
goto foo;
|
|
|
|
default:
|
|
|
|
i = -+-+i;
|
2008-06-06 13:57:00 -06:00
|
|
|
break;
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
|
|
|
}
|
2008-07-07 11:03:10 -06:00
|
|
|
|
|
|
|
func main() {
|
|
|
|
}
|