由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - GO 语言里的 defer 思路是什么?
相关主题
C++的一个mutex问题EBUSY 的定义
go 的坑(转载)how to answer this question, thanks
C++ try {} catch(...){} 能扑捉一切异常吗?mutex和semaphore的差别到底是什么?
发现一个Go的大坑,传给defer的参数不取运行时的值谁能推荐一个read-writer lock的C++实现? (转载)
gcc -Oc++ multi-thread 一问,
面试问题一问 (转载)精华区翻出来的MS老题,thread safe
Restaurant Reservation System...boost thread 里的 shared_mutex 和 readwrite_lock 有什么区别?
about critical section请问关于c++实现singleton的问题?
相关话题的讨论汇总
话题: defer话题: err话题: go话题: nil话题: return
进入Programming版参与讨论
1 (共1页)
i***h
发帖数: 12655
1
不是新发明吧
搞这个目的是什么?
e*****w
发帖数: 144
2
当你需要提早return出函数的时候,defer能保证执行一些善后工作,比如Unlock一个
mutex。

【在 i***h 的大作中提到】
: 不是新发明吧
: 搞这个目的是什么?

p********8
发帖数: 2061
3
很好用啊
如果不用defer,我们的代码可能需要这样写
res := Open(xxx)
if err := xxx; err != nil {
res.Close()
return
}
if err := yyy; err != nil {
res.Close()
return
}
// not error
res.Close()
不但繁琐,还很容易忘记res.Close()
用了defer,就不用操心res的释放了,如下:
res := Open(xxx)
defer res.Close()
if err := xxx; err != nil {
return
}
if err := yyy; err != nil {
return
}
// not error,no need to call res.Close()

【在 i***h 的大作中提到】
: 不是新发明吧
: 搞这个目的是什么?

l*******b
发帖数: 2586
4
和java 的finally类似 ? 有什么区别?

【在 e*****w 的大作中提到】
: 当你需要提早return出函数的时候,defer能保证执行一些善后工作,比如Unlock一个
: mutex。

p*****2
发帖数: 21240
5
c程序员没有见过finally吧

【在 l*******b 的大作中提到】
: 和java 的finally类似 ? 有什么区别?
p***o
发帖数: 1252
6
Windows上的SEH也快有20年的历史了吧。

【在 p*****2 的大作中提到】
: c程序员没有见过finally吧
c****f
发帖数: 1102
7
很好用 你不用主动close() 在载入以后 直接一个defer 就不用担心没close的危险
1 (共1页)
进入Programming版参与讨论
相关主题
请问关于c++实现singleton的问题?gcc -O
请问static variable init的问题?面试问题一问 (转载)
looking for c++ programmersRestaurant Reservation System...
Monitor和semaphore, mutex是什么关系?about critical section
C++的一个mutex问题EBUSY 的定义
go 的坑(转载)how to answer this question, thanks
C++ try {} catch(...){} 能扑捉一切异常吗?mutex和semaphore的差别到底是什么?
发现一个Go的大坑,传给defer的参数不取运行时的值谁能推荐一个read-writer lock的C++实现? (转载)
相关话题的讨论汇总
话题: defer话题: err话题: go话题: nil话题: return