您的位置:首页 > 编程语言 > Go语言

GO语言(八) defer注意点

2013-09-11 16:21 447 查看
package main

import (
"net"
"os"
"fmt"
"io/ioutil"
)

func Clear() {
//以下的打印语句不会执行
//使用os.Exit()作为程序的退出方式时,会跳过defer的执行;
fmt.Println("===========[Exit function execute]===========")
fmt.Println("Clear() is executing.")
}

func main() {
defer Clear()

tcpAddr, err := net.ResolveTCPAddr("tcp4", "google.com:http")
checkError(err)

conn, err := net.DialTCP("tcp", nil, tcpAddr)
checkError(err)

_, err = conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))
checkError(err)

result, err := ioutil.ReadAll(conn)
checkError(err)

fmt.Println(string(result))

os.Exit(0)
}

func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
os.Exit(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: