Ну ты наверху можешь написать то, что должно логически исполниться внизу. Плюс defer не всегда гарантированно исполняется
например f = openFile() defer f.Close() это норм, и для этого сделан дефер - чтобы открытие и закрытие ресурса было рядом, легко читалось и быстро писалось а defer func (){ if !ok { logError("not ok") } } ok = openSomething() if !something { return } ok = closeSomething() это мерзость, запутанная, плохочитаемая не делайте так
Это плохо не тем, что вы логику запихиваете, а захватом неявным
это плохо в первую очередь тем, что такой код очень хреново читаем и управляем
Обсуждают сегодня