我知道这是为了推迟一个过程。我还阅读了一些例子,比如在处理文件和其他资源时使用它很好。我的问题是,是否有其他语言(如 Python 等)没有处理它?如果是,Go 如何提供一些独特的功能?
假设有两个函数 f1
和 f2
,我想在 f1
完成时调用 f2
。我可以做类似的事情:
def f1():
done = False
print('I am doing extensive work')
done = True
return done
def f2():
print('here we go')
if f1():
f2()
延迟是否通过最小化编码工作来做同样的事情?
最佳答案
defer
顾名思义,将延迟执行延迟函数,直到调用函数体退出,无论退出点和条件如何。因此,你的函数 f1
deffering f2
将确保 f2
被调用,即使 f1
中的某些东西失败并出现异常(exception)。我将其视为 try/catch block 中的 finally
子句。
在 python 中,我能想到的最接近 defer
的是 context managers .请注意我是怎么说最接近和不相同的,因为它们的目的有一点重叠,但只是一点点
关于python - Deferred 函数在 Go 中究竟有多大用处以及其他语言中有哪些替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46642260/