php转golang中,对defer关键字写一下初步的心得php
defer特性:golang
代码放上来(defer的三个不一样位置以及不一样的函数返回的值也不一样)数据库
package main
import "fmt"
func main() {
println(DeferFunc1(1))
println(DeferFunc2(1))
println(DeferFunc3(1))
}
func DeferFunc1(i int) (t int) {
t = i
fmt.Println("t1",t);
defer func() {
fmt.Println("t3",t);
t += 3
fmt.Println("t4",t);
}()
fmt.Println("t2",t);
return
}
func DeferFunc2(i int) int {
t := i
fmt.Println("t5",t);
defer func() {
fmt.Println("t7",t);
t += 3
fmt.Println("t8",t);
}()
fmt.Println("t6",t);
return t
}
func DeferFunc3(i int) (t int) {
fmt.Println("t9",t);
defer func() {
fmt.Println("t11",t);
t += i
fmt.Println("t12",t);
}()
fmt.Println("t10",t);
return 2
}
复制代码
先放出来结果bash
总结:若是defer要返回某些参数的值,而不是普通的关闭数据库链接等等,那么要选择好对应参数的做用域,做用域不一样结果也是截然不同函数
(over. 若有不一样意见欢迎文明交流,但愿各位大佬给出指点意见)ui