diff options
Diffstat (limited to 'doc/progs/defer.go')
-rw-r--r-- | doc/progs/defer.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/doc/progs/defer.go b/doc/progs/defer.go new file mode 100644 index 000000000..2e11020ab --- /dev/null +++ b/doc/progs/defer.go @@ -0,0 +1,64 @@ +// Copyright 2011 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. + +// This file contains the code snippets included in "Defer, Panic, and Recover." + +package main + +import ( + "fmt" + "io" + "os" +) + +func a() { + i := 0 + defer fmt.Println(i) + i++ + return +} + +// STOP OMIT + +func b() { + for i := 0; i < 4; i++ { + defer fmt.Print(i) + } +} + +// STOP OMIT + +func c() (i int) { + defer func() { i++ }() + return 1 +} + +// STOP OMIT + +// Initial version. +func CopyFile(dstName, srcName string) (written int64, err error) { + src, err := os.Open(srcName) + if err != nil { + return + } + + dst, err := os.Create(dstName) + if err != nil { + return + } + + written, err = io.Copy(dst, src) + dst.Close() + src.Close() + return +} + +// STOP OMIT + +func main() { + a() + b() + fmt.Println() + fmt.Println(c()) +} |