defer延时函数的使用
defer使用方法
defer 任意语句
在defer所属的函数即将返回时,函数体中的所有defer语句将会按出现的顺序被逆序执行,即函数体中的最后一个defer语句最先被执行。
defer方法所注册的对应事件会在函数或方法结束后执行,常用于关闭各类资源以及“兜底”操作。
举例:
package main
import "fmt"
func main() {
fmt.Println("start now!")
defer fmt.Println("第一个defer")
defer fmt.Println("第二个defer")
defer fmt.Println("第三个defer")
fmt.Println("end ! ")
}
// start now!
// end !
// 第三个defer
// 第二个defer
// 第一个defer
使用defer用来释放资源
由于defer语句是在当前函数即将返回时被调用,所以defer常常被用来释放资源。
package main
import (
"fmt"
"net"
)
func tcpSend() {
conn, err := net.Dial("tcp", "www.baidu.com:80")
if err == nil {
defer conn.Close()
fmt.Println("remote address:", conn.RemoteAddr())
}
fmt.Println("error : ", err)
}
func main() {
tcpSend()
}
// remote address: 108.242.68.4:80
// error : <nil>