// $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 | |
import "fmt" | |
var result string | |
func addInt(i int) { | |
result += fmt.Sprint(i) | |
} | |
func test1helper() { | |
for i := 0; i < 10; i++ { | |
defer addInt(i) | |
} | |
} | |
func test1() { | |
result = ""; | |
test1helper(); | |
if result != "9876543210" { | |
fmt.Printf("test1: bad defer result (should be 9876543210): %q\n", result); | |
} | |
} | |
func addDotDotDot(v ...) { | |
result += fmt.Sprint(v) | |
} | |
func test2helper() { | |
for i := 0; i < 10; i++ { | |
defer addDotDotDot(i) | |
} | |
} | |
func test2() { | |
result = ""; | |
test2helper(); | |
if result != "9876543210" { | |
fmt.Printf("test2: bad defer result (should be 9876543210): %q\n", result); | |
} | |
} | |
func main() { | |
test1(); | |
test2(); | |
} |