>백엔드 개발 >Golang >런타임에 Go 함수의 이름을 어떻게 얻을 수 있나요?

런타임에 Go 함수의 이름을 어떻게 얻을 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-25 14:58:13145검색

How Can I Get a Go Function's Name at Runtime?

Go에서 함수 이름을 검색하는 방법

런타임 중에 Go에서 함수 이름을 가져오는 것이 바람직한 경우가 많습니다. 이는 디버깅 목적, 로깅 또는 기타 메타프로그래밍 작업에 유용할 수 있습니다.

runtime.FuncForPC: 기본 솔루션

Go는 내장 기능인 런타임을 제공합니다. FuncForPC는 PC(프로그램 카운터) 주소가 주어지면 함수 이름을 검색할 수 있습니다. 하지만 PC 주소를 얻으려면 리플렉션이 필요하므로 번거로울 수 있습니다.

간단한 접근 방식

프로세스를 단순화하려면 리플렉트와 런타임을 사용하는 간단한 솔루션이 필요합니다. FuncForPC를 구현할 수 있습니다:

package main

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

func foo() {
}

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

func main() {
    fmt.Println("name:", GetFunctionName(foo))
}

이 함수는 일반 인터페이스 매개변수 i를 받아들이고 다음과 관련된 함수의 이름을 반환합니다. 그 인터페이스. 이 경우 foo는 이름을 검색하는 함수입니다.

사용 예

다음 예에서는 GetFunctionName 함수의 사용을 보여줍니다.

package main

import (
    "fmt"
)

func foo() {
}

func main() {
    fmt.Println("name:", GetFunctionName(foo))
}

이 프로그램을 실행하면 출력:

name: foo

이것은 GetFunctionName 함수가 foo 함수의 이름을 성공적으로 검색했음을 확인합니다.

위 내용은 런타임에 Go 함수의 이름을 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.