blob: ee9414ddc407b4e89ae285da0e210e27d1c6a334 [file] [log] [blame]
Rob Pike126150d2008-06-06 13:28:03 -07001// $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
7
8package main
9
10func assertequal(is, shouldbe int, msg string) {
11 if is != shouldbe {
Rob Pikebc2f5f12008-08-11 22:07:49 -070012 print("assertion fail", msg, "\n");
13 panic(1);
Rob Pike126150d2008-06-06 13:28:03 -070014 }
15}
16
17func f1() {
18}
19
20func f2(a int) {
21}
22
23func f3(a, b int) int {
24 return a+b;
25}
26
27func f4(a, b int, c float) int {
28 return (a+b)/2 + int(c);
29}
30
31func f5(a int) int {
32 return 5;
33}
34
35func f6(a int) (r int) {
36 return 6;
37}
38
Robert Griesemere92b7532008-06-06 15:53:14 -070039func f7(a int) (x int, y float) {
Rob Pike126150d2008-06-06 13:28:03 -070040 return 7, 7.0;
41}
42
43
Robert Griesemere92b7532008-06-06 15:53:14 -070044func f8(a int) (x int, y float) {
Rob Pike126150d2008-06-06 13:28:03 -070045 return 8, 8.0;
46}
47
Russ Cox839a6842009-01-20 14:40:40 -080048type T struct {
Rob Pike126150d2008-06-06 13:28:03 -070049 x, y int;
50}
51
52func (t *T) m10(a int, b float) int {
53 return (t.x+a) * (t.y+int(b));
54}
55
56
Rob Pike6810f392008-07-08 12:22:21 -070057func f9(a int) (i int, f float) {
58 i = 9;
59 f = 9.0;
60 return;
61}
Rob Pike126150d2008-06-06 13:28:03 -070062
63
64func main() {
65 f1();
66 f2(1);
67 r3 := f3(1, 2);
68 assertequal(r3, 3, "3");
69 r4 := f4(0, 2, 3.0);
70 assertequal(r4, 4, "4");
71 r5 := f5(1);
72 assertequal(r5, 5, "5");
73 r6 := f6(1);
74 assertequal(r6, 6, "6");
Rob Pike6810f392008-07-08 12:22:21 -070075 r7, s7 := f7(1);
76 assertequal(r7, 7, "r7");
77 assertequal(int(s7), 7, "s7");
78 r8, s8 := f8(1);
79 assertequal(r8, 8, "r8");
80 assertequal(int(s8), 8, "s8");
81 r9, s9 := f9(1);
82 assertequal(r9, 9, "r9");
83 assertequal(int(s9), 9, "s9");
Russ Cox55645042009-01-06 15:19:02 -080084 var t *T = new(T);
Rob Pike126150d2008-06-06 13:28:03 -070085 t.x = 1;
86 t.y = 2;
87 r10 := t.m10(1, 3.0);
88 assertequal(r10, 10, "10");
89}