我正在尝试在 go 中创建一些通用函数来处理许多不同的对象类型,其中一些类型嵌入了我创建的调用 BaseObject 的方便子类型。
我似乎无法弄清楚如何测试“值接口{}”是否包含一个 BaseObject,或者如何调用它的方法之一,例如 ToString()...它应该返回 [TestObject] 而不是 [BaseObject]
package Test
import(
"fmt"
"reflect"
)
func main() {
Value:=TestObject{}
TestFunction(Value)
}
//Generic function
func TestFunction(Value interface{}){
// Does value contain BaseObject? reflect.TypeOf(Value).Containes...Implements??
//Convert to BaseObject? BO:=Value.(BaseObject)
// If it does, call BO.ToString()
//fmt.println(BO.ToString())
}
//Base Object
type BaseObject struct {
}
func (this *HCObject) ToString() string {
return "[BaseObject]"
}
//Test Object
type TestObject struct{
BaseObject
}
func (this *TestObject) ToString() string {
return "[TestObject]"
}
相关分类