оператор в Go.
В Go оператор deferиспользуется для планирования выполнения вызова функции при возврате из окружающей функции. Он позволяет отложить выполнение определенных операторов до тех пор, пока не завершится окружающая функция, независимо от того, как она завершится (обычно или с ошибкой).
Вот несколько методов, демонстрирующих использование deferв Go, а также примеры кода:
Метод 1: закрытие файла
func readFile(filename string) (string, error) {
file, err := os.Open(filename)
if err != nil {
return "", err
}
defer file.Close() // Close the file when the function returns
// Read the file contents
// ...
return contents, nil
}
Метод 2: разблокировка мьютекса
var mutex sync.Mutex
func doSomething() {
mutex.Lock()
defer mutex.Unlock() // Unlock the mutex when the function returns
// Perform some operations
// ...
}
Метод 3. Ведение журнала
func doSomething() {
defer func() {
if r := recover(); r != nil {
log.Println("Recovered from panic:", r)
}
}() // Log any panics that occur during the function execution
// Perform some operations
// ...
}
Метод 4. Выбор времени
func measureTime() {
start := time.Now()
defer func() {
elapsed := time.Since(start)
log.Println("Execution time:", elapsed)
}() // Measure the execution time of a function
}
Это всего лишь несколько примеров того, как оператор deferможно использовать в Go. Это мощный инструмент, который помогает управлять ресурсами, обрабатывать ошибки и выполнять задачи очистки.