Является ли более безопасным или более идиоматичным выдавать несколько операторов defer
, зависящих от порядка, или отложить анонимную функцию, которая упаковывает логику?
Примеры:
defer os.Remove(tempFile.Name())
defer tempFile.Close()
В приведенном выше примере синтаксис минимален, но порядок отступников обращен к логике, которая должна быть выполнена.
В приведенном ниже примере есть больше строк, больше "синтаксис", но логика находится в более естественном порядке:
defer func() {
tempFile.Close()
os.Remove(tempFile.Name())
}()
Какой из них использовать?