defer的设计确实难用,个人觉得是go中最难用的设计,而且还“很丑陋”,个人觉得defer的设计有点像py的try,对于panic的处理是recover,对于释放***是close,对应到py是try except和try finally,但后者py都很少用了,几乎全全去使用with了,说到底还是try的设计意图不明显。
还有一个问题是go像减少层级的缩进***用了defer这个语法,但这会导致作用范围变得模糊,如果有缩进作用范围会更明显。
defer的设计确实难用,个人觉得是go中最难用的设计,而且还“很丑陋”,个人觉得defer的设计有点像py的try,对于panic的处理是recover,对于释放***是close,对应到py是try except和try finally,但后者py都很少用了,几乎全全去使用with了,说到底还是try的设计意图不明显。
还有一个问题是go像减少层级的缩进***用了defer这个语法,但这会导致作用范围变得模糊,如果有缩进作用范围会更明显。