// $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 main func assertequal(is, shouldbe int, msg string) { if is != shouldbe { print("assertion fail", msg, "\n") panic(1) } } func f1() { } func f2(a int) { } func f3(a, b int) int { return a + b } func f4(a, b int, c float32) int { return (a+b)/2 + int(c) } func f5(a int) int { return 5 } func f6(a int) (r int) { return 6 } func f7(a int) (x int, y float32) { return 7, 7.0 } func f8(a int) (x int, y float32) { return 8, 8.0 } type T struct { x, y int } func (t *T) m10(a int, b float32) int { return (t.x + a) * (t.y + int(b)) } func f9(a int) (i int, f float32) { i = 9 f = 9.0 return } func main() { f1() f2(1) r3 := f3(1, 2) assertequal(r3, 3, "3") r4 := f4(0, 2, 3.0) assertequal(r4, 4, "4") r5 := f5(1) assertequal(r5, 5, "5") r6 := f6(1) assertequal(r6, 6, "6") r7, s7 := f7(1) assertequal(r7, 7, "r7") assertequal(int(s7), 7, "s7") r8, s8 := f8(1) assertequal(r8, 8, "r8") assertequal(int(s8), 8, "s8") r9, s9 := f9(1) assertequal(r9, 9, "r9") assertequal(int(s9), 9, "s9") var t *T = new(T) t.x = 1 t.y = 2 r10 := t.m10(1, 3.0) assertequal(r10, 10, "10") }