疑惑return后面的defer到底会不会执行?

taatcc · · 4177 次点击
不会,文章代码`dst, err := os.Create(dstName)` ,err != nil 时,dst是nil,根本不需要清理,后面的`defer dst.Close()`也不会执行,表达的是一个意思,没有矛盾。
#7
更多评论
需要先让 `defer` 语句执行, 之后才能在 `return` 之前执行 `defer` 关键字后的函数 (或方法). [原理](https://draveness.me/golang/keyword/golang-defer.html)
#1
我也觉得,return之前的defer才会执行,return后面的defer是不会执行的
#2