Функция log.Panic
Функция log.Panic предназначена для аварийного завершения программы.
В первый параметр мы передаем форматированную строку,
во второй и последующие параметры мы передаем значения,
которые подставляются в форматную строку.
При вызове этой функции программа завершается с паникой,
выводя сообщение и трассировку стека.
Синтаксис
log.Panic(format, a...)
Функция принимает форматную строку и переменное количество аргументов, которые подставляются в соответствии со спецификаторами формата.
Пример
Давайте вызовем панику с простым сообщением:
package main
import (
"log"
)
func main() {
log.Panic("critical error occurred")
}
Результат выполнения кода:
2026/09/04 15:04:05 critical error occurred
panic: critical error occurred
goroutine 1 [running]:
log.Panic({0x4c7e88?, 0x0?})
/usr/local/go/src/log/log.go:394 +0x45
main.main()
/your/path/main.go:8 +0x25
exit status 2
В выводе видно, что сообщение выводится с временной меткой, затем идет panic с тем же сообщением и трассировка стека.
Пример
Давайте используем форматирование для вывода более информативного сообщения:
package main
import (
"log"
)
func main() {
userID := 42
log.Panic("user %d not found in database", userID)
}
Результат выполнения кода:
2026/09/04 15:04:05 user 42 not found in database
panic: user 42 not found in database
goroutine 1 [running]:
log.Panic({0x4c7f78?, 0x0?})
/usr/local/go/src/log/log.go:394 +0x45
main.main()
/your/path/main.go:9 +0x45
exit status 2
Как видно, спецификатор %d заменяется на переданное значение, и сообщение становится более информативным.
Пример
Давайте используем панику внутри условного оператора для обработки ошибки:
package main
import (
"log"
"strconv"
)
func main() {
value := "abc"
num, err := strconv.Atoi(value)
if err != nil {
log.Panic("failed to convert %s to int: %v", value, err)
}
log.Println("converted number:", num)
}
Результат выполнения кода:
2026/09/04 15:04:05 failed to convert abc to int: strconv.Atoi: parsing "abc": invalid syntax
panic: failed to convert abc to int: strconv.Atoi: parsing "abc": invalid syntax
goroutine 1 [running]:
log.Panic({0x4c80d8?, 0x0?})
/usr/local/go/src/log/log.go:394 +0x45
main.main()
/your/path/main.go:12 +0xc5
exit status 2
В этом примере показан типичный сценарий использования log.Panic -
когда критическая ошибка делает невозможным дальнейшее выполнение программы.
Смотрите также
-
функцию
log.Panicln,
которая завершает программу с паникой, выводя сообщение с переводом строки -
функцию
log.Panicf,
которая завершает программу с паникой, используя форматирование -
функцию
log.Fatal,
которая завершает программу без паники -
функцию
log.Print,
которая выводит сообщение без завершения программы