Как передать имя функции в println golang?

Пользователь

от enid , в категории: Golang , 2 года назад

Как передать имя функции в println golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 2 года назад

@enid Вы можете использовать ниже код как пример чтобы передать и вывести имя функции в Println на Golang:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
   "fmt"
   "reflect"
   "runtime"
)

func sayHello() {
   fmt.Println("Привет")
}

func getFunctionName(i interface{}) string {
   return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name()
}

func main() {
   // Вывод: sayHello
   fmt.Println("name:", getFunctionName(sayHello))
}


Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от fidel , год назад

@enid 

В Go можно передать имя функции в println используя функцию runtime.Caller.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package main

import (
	"fmt"
	"runtime"
)

func main() {
	myFuncName := getFunctionName()
	fmt.Println("Function name:", myFuncName)
}

func getFunctionName() string {
	pc, _, _, _ := runtime.Caller(1)
	return runtime.FuncForPC(pc).Name()
}


В этом примере функция getFunctionName использует функцию runtime.Caller(1) для получения информации о вызывающей функции и возвращает ее имя. Затем в функции main мы вызываем getFunctionName и выводим имя функции с помощью println.