Telegram Group & Telegram Channel
Как влияет порядок defer-вызовов на поведение программы

Конструкция defer в Go вызывает функции в обратном порядке, по принципу стека (LIFO — Last In, First Out). То есть последняя отложенная функция будет выполнена первой при выходе из текущей функции.

Пример:
func demo() {
defer fmt.Println("Первый")
defer fmt.Println("Второй")
defer fmt.Println("Третий")
}

Вывод:
Третий  
Второй
Первый


Корректное освобождение ресурсов:
При работе с вложенными ресурсами defer автоматически освобождает их в правильном порядке:
f1, _ := os.Open("a.txt")
defer f1.Close()
f2, _ := os.Open("b.txt")
defer f2.Close()

Сначала закроется b.txt, потом a.txt — что логично.

Откат операций в нужной последовательности:
При выполнении нескольких шагов (например, в транзакции), можно отложить откат в порядке, обратном их применению.

Отладка и читаемость:
Если defer-вызовов много, особенно внутри циклов и функций, легко запутаться в порядке их выполнения. Это стоит учитывать при разработке.


🐸 Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/go_interview_lib/865
Create:
Last Update:

Как влияет порядок defer-вызовов на поведение программы

Конструкция defer в Go вызывает функции в обратном порядке, по принципу стека (LIFO — Last In, First Out). То есть последняя отложенная функция будет выполнена первой при выходе из текущей функции.

Пример:

func demo() {
defer fmt.Println("Первый")
defer fmt.Println("Второй")
defer fmt.Println("Третий")
}

Вывод:
Третий  
Второй
Первый


Корректное освобождение ресурсов:
При работе с вложенными ресурсами defer автоматически освобождает их в правильном порядке:
f1, _ := os.Open("a.txt")
defer f1.Close()
f2, _ := os.Open("b.txt")
defer f2.Close()

Сначала закроется b.txt, потом a.txt — что логично.

Откат операций в нужной последовательности:
При выполнении нескольких шагов (например, в транзакции), можно отложить откат в порядке, обратном их применению.

Отладка и читаемость:
Если defer-вызовов много, особенно внутри циклов и функций, легко запутаться в порядке их выполнения. Это стоит учитывать при разработке.


🐸 Библиотека Go для собеса

BY Библиотека Go для собеса | вопросы с собеседований


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/go_interview_lib/865

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

Telegram announces Search Filters

With the help of the Search Filters option, users can now filter search results by type. They can do that by using the new tabs: Media, Links, Files and others. Searches can be done based on the particular time period like by typing in the date or even “Yesterday”. If users type in the name of a person, group, channel or bot, an extra filter will be applied to the searches.

Telegram today rolling out an update which brings with it several new features.The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations.

telegram from ms


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM USA