GO_INTERVIEW_LIB Telegram 920
Какую роль играет ключевое слово defer в Go

defer в Go — это ключевое слово, которое откладывает выполнение функции или метода до завершения текущей функции.
Когда встречается
defer, Go добавляет вызов функции в стек отложенных операций и продолжает выполнение текущего кода.

Применения defer:

Закрытие ресурсов. Одно из самых частых применений defer — это гарантированное закрытие ресурсов (например, файлов, сетевых соединений или подключений к базе данных) после их использования.
file, err := os.Open("file.txt")
if err != nil {
// обработка ошибки
}
defer file.Close()


Множественные отложенные вызовы. Вы можете использовать несколько defer в одной функции. Они будут выполняться в обратном порядке (LIFO — Last In, First Out).
func example() {
defer fmt.Println("1")
defer fmt.Println("2")
fmt.Println("Function body")
}


Передача аргументов. Аргументы функции, вызванной через defer, вычисляются в момент вызова defer, а не при фактическом исполнении отложенной функции.
func example(a int) {
defer fmt.Println(a)
a *= 2
return
}
example(5) // Выведет: 5


Использование с паникой. defer часто используется с recover() для обработки или логирования паники, если она возникает в функции.
func mightPanic() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
// код, который может вызвать панику
}


Зависимость от контекста. Отложенные функции могут иметь доступ к локальным переменным и изменять их значения, что делает defer удобным инструментом для выполнения завершающих операций перед выходом из функции.

Затраты на производительность. Хотя defer очень удобно использовать, в циклах с интенсивными вычислениями его применение может незначительно повлиять на производительность из-за накладных расходов.

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



tgoop.com/go_interview_lib/920
Create:
Last Update:

Какую роль играет ключевое слово defer в Go

defer в Go — это ключевое слово, которое откладывает выполнение функции или метода до завершения текущей функции.
Когда встречается
defer, Go добавляет вызов функции в стек отложенных операций и продолжает выполнение текущего кода.

Применения defer:

Закрытие ресурсов. Одно из самых частых применений defer — это гарантированное закрытие ресурсов (например, файлов, сетевых соединений или подключений к базе данных) после их использования.

file, err := os.Open("file.txt")
if err != nil {
// обработка ошибки
}
defer file.Close()


Множественные отложенные вызовы. Вы можете использовать несколько defer в одной функции. Они будут выполняться в обратном порядке (LIFO — Last In, First Out).
func example() {
defer fmt.Println("1")
defer fmt.Println("2")
fmt.Println("Function body")
}


Передача аргументов. Аргументы функции, вызванной через defer, вычисляются в момент вызова defer, а не при фактическом исполнении отложенной функции.
func example(a int) {
defer fmt.Println(a)
a *= 2
return
}
example(5) // Выведет: 5


Использование с паникой. defer часто используется с recover() для обработки или логирования паники, если она возникает в функции.
func mightPanic() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
// код, который может вызвать панику
}


Зависимость от контекста. Отложенные функции могут иметь доступ к локальным переменным и изменять их значения, что делает defer удобным инструментом для выполнения завершающих операций перед выходом из функции.

Затраты на производительность. Хотя defer очень удобно использовать, в циклах с интенсивными вычислениями его применение может незначительно повлиять на производительность из-за накладных расходов.

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

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


Share with your friend now:
tgoop.com/go_interview_lib/920

View MORE
Open in Telegram


Telegram News

Date: |

The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Write your hashtags in the language of your target audience. While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.” Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation.
from us


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