例如,当使用标准库中的lines迭代器遍历文件的各行时,如果我使用break提前中断了迭代,文件会正确关闭吗?
答案 0 :(得分:1)
如文档所述:
var f = open("numbers.txt")
defer: close(f)
f.write "abc"
f.write "def"
被翻译成:
var f = open("numbers.txt")
try:
f.write "abc"
f.write "def"
finally:
close(f)
因此,即使close(f)
包含try
,也总是在break
代码之后调用。