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
|
2009-08-17 14:30:22 -06:00
|
|
|
a_const = 0
|
2008-12-19 04:05:37 -07:00
|
|
|
|
2008-03-11 18:07:25 -06:00
|
|
|
const (
|
2010-09-03 18:36:13 -06:00
|
|
|
pi = /* the usual */ 3.14159265358979323
|
|
|
|
e = 2.718281828
|
|
|
|
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 (
|
2010-09-03 18:36:13 -06:00
|
|
|
Empty interface {}
|
2009-08-17 14:30:22 -06:00
|
|
|
Point struct {
|
2010-09-03 18:36:13 -06:00
|
|
|
x, y int
|
|
|
|
}
|
2009-08-17 14:30:22 -06:00
|
|
|
Point2 Point
|
2008-03-12 14:12:40 -06:00
|
|
|
)
|
2008-03-12 15:57:03 -06:00
|
|
|
|
2008-07-07 11:03:10 -06:00
|
|
|
func (p *Point) Initialize(x, y int) *Point {
|
2010-09-03 18:36:13 -06:00
|
|
|
p.x, p.y = x, y
|
|
|
|
return p
|
2008-03-12 15:57:03 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func (p *Point) Distance() int {
|
2010-09-03 18:36:13 -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 (
|
2010-09-03 18:36:13 -06:00
|
|
|
x1 int
|
|
|
|
x2 int
|
2009-08-17 14:30:22 -06:00
|
|
|
u, v, w float
|
2008-03-11 18:07:25 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
func foo() {}
|
|
|
|
|
|
|
|
func min(x, y int) int {
|
2009-08-17 14:30:22 -06:00
|
|
|
if x < y { return x; }
|
2010-09-03 18:36:13 -06:00
|
|
|
return y
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func swap(x, y int) (u, v int) {
|
2010-09-03 18:36:13 -06:00
|
|
|
u = y
|
|
|
|
v = x
|
|
|
|
return
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
func control_structs() {
|
2010-09-03 18:36:13 -06:00
|
|
|
var p *Point = new(Point).Initialize(2, 3)
|
|
|
|
i := p.Distance()
|
|
|
|
var f float = 0.3
|
|
|
|
_ = f
|
|
|
|
for {}
|
2009-08-17 14:30:22 -06:00
|
|
|
for {}
|
|
|
|
for j := 0; j < i; j++ {
|
|
|
|
if i == 0 {
|
2010-09-03 18:36:13 -06:00
|
|
|
} else i = 0
|
|
|
|
var x float
|
|
|
|
_ = x
|
2009-08-17 14:30:22 -06:00
|
|
|
}
|
|
|
|
foo: // a label
|
2010-09-03 18:36:13 -06:00
|
|
|
var j int
|
2009-08-17 14:30:22 -06:00
|
|
|
switch y := 0; true {
|
|
|
|
case i < y:
|
2010-09-03 18:36:13 -06:00
|
|
|
fallthrough
|
2009-08-17 14:30:22 -06:00
|
|
|
case i < j:
|
|
|
|
case i == 0, i == 1, i == j:
|
2010-09-03 18:36:13 -06:00
|
|
|
i++; i++
|
|
|
|
goto foo
|
2009-08-17 14:30:22 -06:00
|
|
|
default:
|
2010-09-03 18:36:13 -06:00
|
|
|
i = -+-+i
|
|
|
|
break
|
2009-08-17 14:30:22 -06:00
|
|
|
}
|
2008-03-11 18:07:25 -06:00
|
|
|
}
|
2008-07-07 11:03:10 -06:00
|
|
|
|
|
|
|
func main() {
|
|
|
|
}
|