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