有無論如何可以製作一個函數指針映射,但是帶有接收者的函數呢?我知道如何使用常規功能:Golang一個帶有接收器的函數圖
package main
func someFunc(x int) int {
return x
}
func main() {
m := make(map[string]func(int)int, 0)
m["1"] = someFunc
print(m["1"](56))
}
但是,你可以使用接收接收者的函數嗎?像這樣的東西(雖然我已經試過這一點,它不工作):
package main
type someStruct struct {
x int
}
func (s someStruct) someFunc() int {
return s.x
}
func main() {
m := make(map[string](someStruct)func()int, 0)
s := someStruct{56}
m["1"] = someFunc
print(s.m["1"]())
}
一個顯而易見的解決辦法是隻傳遞結構作爲參數,但這是髒一點比我本來
否 - 方法不是自由浮動的功能,你可以」沒有關聯實例的方法的引用,並且不能針對不同的實例執行它。你可以用[反射](http://golang.org/pkg/reflect)來做到這一點。 – Adrian
實際上,您可以爲沒有關聯實例的方法提供參考:https://golang.org/ref/spec#Method_expressions。以我的答案爲例。 – eugenioy