modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/defer.go (about) 1 // run 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 // Test defer. 8 9 package main 10 11 import "fmt" 12 13 var result string 14 15 func addInt(i int) { result += fmt.Sprint(i) } 16 17 func test1helper() { 18 for i := 0; i < 10; i++ { 19 defer addInt(i) 20 } 21 } 22 23 func test1() { 24 result = "" 25 test1helper() 26 if result != "9876543210" { 27 fmt.Printf("test1: bad defer result (should be 9876543210): %q\n", result) 28 panic("defer") 29 } 30 } 31 32 func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v...) } 33 34 func test2helper() { 35 for i := 0; i < 10; i++ { 36 defer addDotDotDot(i) 37 } 38 } 39 40 func test2() { 41 result = "" 42 test2helper() 43 if result != "9876543210" { 44 fmt.Printf("test2: bad defer result (should be 9876543210): %q\n", result) 45 panic("defer") 46 } 47 } 48 49 func main() { 50 test1() 51 test2() 52 }