РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1566 of 1593 menu

Тип runtime.Func

Тип runtime.Func представляет функцию в рантайме Go. Он используется для получения информации о функции во время выполнения программы. Основное применение этого типа связано с получением имени функции и её исходного кода. Тип runtime.Func возвращается функцией runtime.FuncForPC, которая принимает указатель на программный счетчик (program counter) и возвращает соответствующий объект runtime.Func.

Синтаксис

Тип runtime.Func определяется следующим образом:

type Func struct { // содержит скрытые поля }

Основные методы типа runtime.Func:

func (f *Func) Name() string func (f *Func) Entry() uintptr func (f *Func) FileLine(pc uintptr) (file string, line int)

Пример

Давайте получим информацию о текущей функции с помощью runtime.Func:

package main import ( "fmt" "runtime" ) func main() { pc, _, _, _ := runtime.Caller(0) fn := runtime.FuncForPC(pc) fmt.Println(fn.Name()) }

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

"main.main"

Пример

Давайте получим имя и точку входа для функции:

package main import ( "fmt" "runtime" ) func testFunc() { fmt.Println("test function") } func main() { pc := reflect.ValueOf(testFunc).Pointer() fn := runtime.FuncForPC(pc) fmt.Println(fn.Name()) fmt.Println(fn.Entry()) }

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

"main.testFunc" "17445632"

Пример

Давайте получим информацию о файле и строке для определенного программного счетчика:

package main import ( "fmt" "runtime" ) func main() { pc := make([]uintptr, 1) runtime.Callers(1, pc) fn := runtime.FuncForPC(pc[0]) file, line := fn.FileLine(pc[0]) fmt.Println(file) fmt.Println(line) }

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

"/tmp/main.go" "9"

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

  • функцию runtime.Caller,
    которая возвращает информацию о вызывающей функции
  • функцию runtime.Callers,
    которая заполняет срез программными счетчиками
  • функцию runtime.FuncForPC,
    которая возвращает объект runtime.Func для программного счетчика
  • тип runtime.Frame,
    который представляет фрейм стека вызовов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить