是否可以在Go中獲取函數引用的地址?如何獲取函數的地址?
喜歡的東西
func myFunction() {
}
// ...
unsafe.Pointer(&myFunction)
只是,是不工作的方式。我猜這是不可能的,但我還沒有找到任何證據。
編輯:背景
我的問題的背景來自於處理CGO和C函數指針。 這工作:
/*
void go_myFunction();
typedef void (*myFunction_f)();
myFunction_f pMyFunction;
*/
import "C"
//export go_myFunction
func go_myFunction() {
// ...
}
func SetupFp() {
C.pMyFunction = (*[0]byte)(unsafe.Pointer(C.go_myFunction))
}
我也很清楚,文件指出,將指針傳遞到去功能不起作用。但上面的代碼似乎沒有那麼遠。我只是想知道是否可以跳過出口步驟。
參見[地址運算符(https://golang.org/ref/spec#Address_operators)的規範。 '操作數必須是可尋址的,即變量,指針間接或片段索引操作;或可尋址結構操作數的字段選擇器;或者可尋址數組的數組索引操作 – JimB
因爲在Go中沒有這樣一個函數地址,所以你究竟在做什麼? – JimB
[golang反射獲取閉包函數指針]的可能重複(http://stackoverflow.com/questions/36126552/golang-reflect-get-closure-function-pointer/36127142#36127142);和[如何比較Go中的2個函數](http://stackoverflow.com/questions/34901307/how-to-compare-2-functions-in-go/34901677#34901677) – icza