обоснование "()" в телах закрытия в 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