Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Boleh Dapatkan Maklumat Fungsi Pemanggil dalam Go?

Bagaimana Saya Boleh Dapatkan Maklumat Fungsi Pemanggil dalam Go?

Linda Hamilton
Lepaskan: 2024-12-20 08:56:11
asal
861 orang telah melayarinya

How Can I Retrieve Caller Function Information in Go?

Mendapatkan Maklumat Fungsi Pemanggil dalam Go

Adalah mungkin untuk mendapatkan maklumat tentang fungsi pemanggil dalam Go. Ini membolehkan anda menjejak tindanan panggilan, mengenal pasti konteks panggilan dan melakukan pelbagai operasi penyahpepijatan atau pemprofilan.

Menggunakan masa jalan.Pemanggil

Kaedah utama untuk mendapatkan maklumat pemanggil ialah masa jalan.Pemanggil fungsi. Ia memerlukan hujah integer yang menunjukkan bilangan bingkai tindanan untuk dilangkau sebelum mendapatkan semula maklumat. Secara lalai, ia melangkau satu bingkai, memberikan data tentang pemanggil segera.

Fungsi masa jalan.Pemanggil mengembalikan uintptr, rentetan yang mewakili laluan fail, integer mewakili nombor baris dan boolean yang menunjukkan sama ada mendapatkan semula berjaya.

Contoh: Mendapatkan Fail Pemanggil dan Nombor Talian

Untuk menunjukkan mendapatkan semula nama fail pemanggil dan nombor talian:

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: Mendapatkan Lagi Maklumat dengan runtime.FuncForPC

Untuk maklumat yang lebih terperinci, anda boleh menggunakan runtime.FuncForPC untuk mendapatkan objek *Func mewakili fungsi pemanggil. Objek ini menyediakan akses kepada data tambahan, seperti nama fungsi dan laluan pakej.

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 kaedah ini, anda boleh mengumpulkan maklumat dengan mudah tentang fungsi pemanggil dalam Go, yang boleh menjadi berharga untuk penyahpepijatan, pemprofilan , dan senario pengaturcaraan lanjutan lain.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Dapatkan Maklumat Fungsi Pemanggil dalam Go?. 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