Menyemak Kod Go: Mendapatkan Nama Fungsi Semasa
Dalam Go, mendapatkan nama fungsi semasa adalah penting untuk penyahpepijatan dan pengesanan. FUNGSI makro dalam gcc menyediakan fungsi ini dan kami berhasrat untuk mencontohinya dalam Go.
Penyelesaian
Kuncinya terletak pada pakej masa jalan. Berikut ialah penyelesaian:
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.Callers(2, pc) f := runtime.FuncForPC(pc[0]) file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
Fungsi ini berfungsi dengan:
Contoh Kemas Kini
Untuk Go versi 1.7 , pendekatan yang disyorkan ialah untuk menggunakan runtime.CallersFrames dan bukannya runtime.FuncForPC. Contoh yang dikemas kini di bawah:
import ( "fmt" "runtime" ) func trace() { pc := make([]uintptr, 10) // Need at least 1 entry runtime.CallersFrames(2, pc) frame, _ := runtime.CallersFrames(2, pc) fmt.Printf("%s:%d %s\n", frame[0].File, frame[0].Line, frame[0].Function) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Fungsi Semasa dalam Kod Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!