blob: e8ed928bcd3773d528219357be629480283a5233 [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 Pike4f61fc92010-09-04 10:36:13 +100012 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 {
Russ Coxf2b5a072011-01-19 23:09:00 -050024 return a + b
Rob Pike126150d2008-06-06 13:28:03 -070025}
26
Russ Coxf2b5a072011-01-19 23:09:00 -050027func f4(a, b int, c float32) int {
Rob Pike4f61fc92010-09-04 10:36:13 +100028 return (a+b)/2 + int(c)
Rob Pike126150d2008-06-06 13:28:03 -070029}
30
31func f5(a int) int {
Rob Pike4f61fc92010-09-04 10:36:13 +100032 return 5
Rob Pike126150d2008-06-06 13:28:03 -070033}
34
35func f6(a int) (r int) {
Rob Pike4f61fc92010-09-04 10:36:13 +100036 return 6
Rob Pike126150d2008-06-06 13:28:03 -070037}
38
Russ Coxf2b5a072011-01-19 23:09:00 -050039func f7(a int) (x int, y float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100040 return 7, 7.0
Rob Pike126150d2008-06-06 13:28:03 -070041}
42
43
Russ Coxf2b5a072011-01-19 23:09:00 -050044func f8(a int) (x int, y float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100045 return 8, 8.0
Rob Pike126150d2008-06-06 13:28:03 -070046}
47
Russ Cox839a6842009-01-20 14:40:40 -080048type T struct {
Rob Pike4f61fc92010-09-04 10:36:13 +100049 x, y int
Rob Pike126150d2008-06-06 13:28:03 -070050}
51
Russ Coxf2b5a072011-01-19 23:09:00 -050052func (t *T) m10(a int, b float32) int {
53 return (t.x + a) * (t.y + int(b))
Rob Pike126150d2008-06-06 13:28:03 -070054}
55
56
Russ Coxf2b5a072011-01-19 23:09:00 -050057func f9(a int) (i int, f float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100058 i = 9
59 f = 9.0
60 return
Rob Pike6810f392008-07-08 12:22:21 -070061}
Rob Pike126150d2008-06-06 13:28:03 -070062
63
64func main() {
Rob Pike4f61fc92010-09-04 10:36:13 +100065 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")
75 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")
84 var t *T = new(T)
85 t.x = 1
86 t.y = 2
87 r10 := t.m10(1, 3.0)
88 assertequal(r10, 10, "10")
Rob Pike126150d2008-06-06 13:28:03 -070089}