Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Boleh Mendapatkan Maklumat Fungsi Pemanggil di Golang?

Bagaimana Saya Boleh Mendapatkan Maklumat Fungsi Pemanggil di Golang?

Susan Sarandon
Lepaskan: 2024-12-26 05:50:32
asal
481 orang telah melayarinya

How Can I Get Caller Function Information in Golang?

Mendapatkan Maklumat Fungsi Pemanggil di Golang

Di Golang, adalah mungkin untuk mendapatkan cerapan tentang fungsi pemanggil. Pertimbangkan coretan kod berikut:

func foo() {
    // Do something
}

func main() {
    foo()
}
Salin selepas log masuk

Timbul persoalan: bagaimana kita boleh menentukan bahawa foo telah dipanggil dari utama? Bahasa lain, seperti C#, memudahkan tugas ini menggunakan atribut seperti CallerMemberName.

Syukurlah, Golang menyediakan penyelesaian dengan fungsi runtime.Caller.

func Caller(skip int) (pc uintptr, file string, line int, ok bool)
Salin selepas log masuk

Contoh Pelaksanaan

Contoh #1: Mencetak Nama Fail Pemanggil dan Talian Nombor

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    _, file, no, ok := runtime.Caller(1)
    if ok {
        fmt.Printf("called from %s#%d\n", file, no)
    }
}

func main() {
    foo()
}
Salin selepas log masuk

Contoh #2: Mendapatkan Lagi Maklumat dengan runtime.FuncForPC

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    pc, _, _, ok := runtime.Caller(1)
    details := runtime.FuncForPC(pc)
    if ok & details != nil {
        fmt.Printf("called from %s\n", details.Name())
    }
}

func main() {
    foo()
}
Salin selepas log masuk

Dengan menggunakan contoh ini, anda boleh mendapatkan cerapan dengan mudah maklumat fungsi pemanggil dalam Go.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Maklumat Fungsi Pemanggil di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan