blob: 2e11020abf54ce4506afc68e80ee70cdb8db7a91 [file] [log] [blame]
Andrew Gerrand49d82b42011-12-12 13:15:29 +11001// Copyright 2011 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
Shenghou Macd54e442012-01-12 07:55:23 -08005// This file contains the code snippets included in "Defer, Panic, and Recover."
Andrew Gerrand49d82b42011-12-12 13:15:29 +11006
7package main
8
9import (
10 "fmt"
11 "io"
12 "os"
13)
14
15func a() {
16 i := 0
17 defer fmt.Println(i)
18 i++
19 return
20}
Andrew Gerrand8f1cb092012-01-05 16:43:02 +110021
Andrew Gerrand49d82b42011-12-12 13:15:29 +110022// STOP OMIT
23
24func b() {
25 for i := 0; i < 4; i++ {
26 defer fmt.Print(i)
27 }
28}
Andrew Gerrand8f1cb092012-01-05 16:43:02 +110029
Andrew Gerrand49d82b42011-12-12 13:15:29 +110030// STOP OMIT
31
32func c() (i int) {
33 defer func() { i++ }()
34 return 1
35}
Andrew Gerrand8f1cb092012-01-05 16:43:02 +110036
Andrew Gerrand49d82b42011-12-12 13:15:29 +110037// STOP OMIT
38
Shenghou Macd54e442012-01-12 07:55:23 -080039// Initial version.
Andrew Gerrand49d82b42011-12-12 13:15:29 +110040func CopyFile(dstName, srcName string) (written int64, err error) {
41 src, err := os.Open(srcName)
42 if err != nil {
43 return
44 }
45
46 dst, err := os.Create(dstName)
47 if err != nil {
48 return
49 }
50
51 written, err = io.Copy(dst, src)
52 dst.Close()
53 src.Close()
54 return
55}
Andrew Gerrand8f1cb092012-01-05 16:43:02 +110056
Andrew Gerrand49d82b42011-12-12 13:15:29 +110057// STOP OMIT
Andrew Gerrand8f1cb092012-01-05 16:43:02 +110058
59func main() {
60 a()
61 b()
62 fmt.Println()
63 fmt.Println(c())
64}