3 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果 obj 是一個(gè),interface{}你可以使用 Go 類型斷言:
if correctobj, ok := obj.(interface{methodName()}); ok {
correctobj.methodName()
}

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
除了接口大括號{write_function_declaration_here}內(nèi)@evanmcdonnal的解決方案之外,您將編寫函數(shù)聲明
if correctobj, ok := obj.(interface{methodName(func_arguments_here)(return_elements_here)}); ok {
x,... := correctobj.methodName()
}
IE
package main
import "fmt"
type test struct {
fname string
}
func (t *test) setName(name string) bool {
t.fname = name
return true
}
func run(arg interface{}) {
if obj, ok := arg.(interface{ setName(string) bool });
ok {
res := obj.setName("Shikhar")
fmt.Println(res)
fmt.Println(obj)
}
}
func main() {
x := &test{
fname: "Sticker",
}
fmt.Println(x)
run(x)
}
- 3 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報(bào)