4
如何獲得函數參數在Go運行時,我所知道的僅僅是如何獲得函數名稱:在運行時獲取函數參數圍棋
pc, file, line, ok := runtime.Caller(2)
rt := runtime.FuncForPC(pc)
return rt.Name() // Foo
我需要的是這樣的:
Foo(1,2,3)
// Foo_1_2_3
如何獲得函數參數在Go運行時,我所知道的僅僅是如何獲得函數名稱:在運行時獲取函數參數圍棋
pc, file, line, ok := runtime.Caller(2)
rt := runtime.FuncForPC(pc)
return rt.Name() // Foo
我需要的是這樣的:
Foo(1,2,3)
// Foo_1_2_3
不是一個完整的答案,但也許這可以幫助:
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println(reflect.TypeOf(f1))
for index := 0; index < reflect.TypeOf(f1).NumIn(); index++ {
fmt.Println(reflect.TypeOf(f1).In(index))
}
}
func f1(a int, b string) {}
打印:
func(int, string) int string
我已經過了幾個小時來閱讀文檔,並試圖找到一個回答你的問題。但是,哼哼,我能說的是我沒有發現任何與之相關的東西。如果您發現任何解決方案,請更新您的問題或回答。這將有所幫助。謝謝。 –
你能發佈一個可運行的例子嗎? –
@ nexus66 XD so ..我還沒有找到任何解決方案,我所做的是爲每個函數手動編寫名稱和參數..類似於: 'ram_key:=「FunctionName」+ I.ToS(arg1) +「_」+ I.ToS(arg2)+「_」+ I.ToS(arg3)'//根本不使用任何反射,所以它可能更快 – Kokizzu