|  | // 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()) | 
|  | } |