Middle
Go тилиндеги defer оператору эмне?
sobes.tech AI
AIден жооп
defer оператору колдонулат функция же ыкманы кечиктирилген ишке ашыруу үчүн. defer менен белгиленген функциялар же ыкмалар, аларды камтыган функциядан чыгуу алдында дароо ишке ашырылат.
defer иштөө принциптери:
- Учурдагы функциядан чыгуу учурунда, ал нормалдуу же паника менен болсун, ишке ашырылат.
- Бир функцияда бир нече
deferLIFO (Last-In, First-Out) тартибинде ишке ашырылат. - Ресурстарды тазалоо үчүн пайдалуу, мисалы, файлдарды жабуу же тармактык байланыштарды өчүрүү.
Колдонуу мисалы:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Файл ачылууда.")
file, err := os.Open("example.txt")
if err != nil {
// Ката иштетүү
return
}
// Кечиктирилген файлды жабуу
defer file.Close()
defer fmt.Println("Файл жабылат.") // Бул `defer` биринчи ишке ашырылат (LIFO)
fmt.Println("Файл иштелүүдө...")
// Файл менен кошумча иш
}
Программа чыгышы:
Файл ачылууда.
Файл иштелүүдө...
Файл жабылат.