«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > На языке GO, причины и функции использования `()` после оператора «DEFER»

На языке GO, причины и функции использования `()` после оператора «DEFER»

Опубликовано в 2025-04-21
Просматривать:695

Why Use

обоснование "()" в телах закрытия в go

В Go добавление "()" после того, как тело закрытия не зависит от закрытия, а скорее применяется к любой функции в пределах утверждения DEFE. Языковые спецификации требуют, чтобы выражение в утверждении DEFE всегда должно быть вызовом функции.

рассмотрим пример:

defer f()

это выражение пытается отложить выполнение самой функции f, что не имеет смысла. Вместо этого правильный синтаксис:

defer f()()

] Это конструирует закрытие, которое фиксирует текущий контекст и выполняет функцию F при активации оператора DEFER. Внешние скобки немедленно выполняют закрытие, гарантируя, что функциональный вызов произошел после выполнения оператора DEFER.

Этот синтаксис согласуется с общим использованием вызовов функций в GO, которые всегда требуют скобков для их выполнения. Например, для печати значения i В то время, когда определено закрытие, используйте следующий синтаксис:

defer func(n int) { fmt.Println(n) }(i)

] Рекомендации, чтобы распечатать значение I в то время, когда закрытие выполняется,

defer func() { fmt.Println(i) }()
]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3