Функция log.Panicf

Функция log.Panicf форматирует сообщение по заданному шаблону, выводит его в стандартный логгер и вызывает панику с этим же сообщением. Первый параметр функции - строка формата, второй и последующие - аргументы для форматирования. После вызова log.Panicf выполнение программы останавливается, а паника распространяется по стеку вызовов, если не была перехвачена механизмом восстановления.

Синтаксис

golog.Panicf(format string, v ...interface{})

Функция принимает строку формата и переменное количество аргументов, подобно fmt.Printf. Строка формата может содержать спецификаторы для вставки значений различных типов.

Пример

Давайте вызовем панику с форматированным сообщением:

gopackage main

import (
  "log"
)

func main() {
  name := "Alice"
  age := 30
  log.Panicf("User %s is %d years old", name, age)
}

Результат выполнения кода:

go"2026/01/15 14:30:45 User Alice is 30 years old"

Программа выведет сообщение в лог и завершится с паникой.

Пример

Если необходимо вывести значение ошибки вместе с дополнительной информацией:

gopackage main

import (
  "log"
  "strconv"
)

func main() {
  value := "abc"
  num, err := strconv.Atoi(value)
  if err != nil {
    log.Panicf("Failed to convert '%s' to int: %v", value, err)
  }
  log.Printf("Converted number: %d", num)
}

Результат выполнения кода:

go"2026/01/15 14:30:46 Failed to convert 'abc' to int: strconv.Atoi: parsing \"abc\": invalid syntax"

В этом примере при ошибке конвертации выводится детальное сообщение, а программа завершается паникой.

Пример

Покажем, как перехватить панику с помощью recover:

gopackage main

import (
  "fmt"
  "log"
)

func main() {
  defer func() {
    if r := recover(); r != nil {
      fmt.Printf("Recovered from panic: %v\n", r)
    }
  }()

  log.Panicf("Critical error: %s", "database connection lost")
  fmt.Println("This line will not be executed")
}

Результат выполнения кода:

go"2026/01/15 14:30:47 Critical error: database connection lost"
"Recovered from panic: Critical error: database connection lost"

Сообщение сначала попадает в лог, затем паника перехватывается в отложенной функции, и программа продолжает выполнение.

Смотрите также

  • функцию log.Panic,
    которая выводит сообщение и вызывает панику без форматирования
  • функцию log.Panicln,
    которая выводит сообщение с пробелами между аргументами и вызывает панику
  • функцию log.Fatalf,
    которая выводит форматированное сообщение и завершает программу без паники
  • функцию log.Printf,
    которая выводит форматированное сообщение без остановки программы