第 13 天要介绍 defer 是什麽,那麽我们就进入正题吧 ─=≡Σ(((っ゚∀゚)っ
defer 是 Go 内建的函式,执行的时间点会在 function 要回传前被执行。
package main
import "fmt"
func main() {
defer fmt.Println("World")
fmt.Println("Hello")
}
// => Hello
// World
虽然 defer 是最後才执行,但是他接收到参数的时间点还是跟程序码执行的顺序有关:
package main
import "fmt"
func main() {
cat := "BuiBui"
defer fmt.Println(cat)
cat = "MeiMei"
fmt.Println("Which cat?")
}
// => Which cat?
// BuiBui
最後得到的 cat 是 BuiBui,由此可以确定 defer 会先接完参数,再等到 function 结束前才执行。
最後 defer 的一个特点是 last-in-first-out,一般执行方法都会先呼叫的先执行,但在 defer 会是最後呼叫的先执行:
package main
import "fmt"
func main() {
cat := "BuiBui"
defer fmt.Println(cat)
cat = "MeiMei"
defer fmt.Println(cat)
}
// => MeiMei
// BuiBui
如果用回圈执行看看:
package main
import "fmt"
func main() {
fmt.Println("Go!")
for i := 0; i < 5; i++ {
defer fmt.Println(i)
}
fmt.Println("Done!")
}
// => Go!
// Done!
// 4
// 3
// 2
// 1
// 0
defer 的介绍就到此结束,有任何问题都欢迎与我告知 :)
本篇文章同步发布於我的部落格
>>: Day23:Hot Flow - StateFlow
Object content Imutability Object constant 将指定的 p...
Abstract Annotation的技术风格为Java 5 之後所推畅出来的新模式,并将注解区分...
元件介绍 Card 是一个可以显示单个主题内容及操作的元件,通常这个主题内容包含图片、标题、描述或是...
纪录了一下学习 SQLALchemy 的过程,如果有错误再请各位大神指教 一、套件安装 pip in...
今天我们要示范如何让一个在 Public Subnet 里面的 EC2 instance 可以与 ...