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