Defer语句
可以使用 defer 语句而不是 try finally 语句。
当前块中 defer 之后的任何语句都将被视为隐式try块:
- proc main =
- var f = open("numbers.txt")
- defer: close(f)
- f.write "abc"
- f.write "def"
被重写为:
- proc main =
- var f = open("numbers.txt")
- try:
- f.write "abc"
- f.write "def"
- finally:
- close(f)
不支持顶级 defer 语句,因为不清楚这样的语句应该引用什么。