다른 객체 유형을 많이 처리하는 일부 일반 함수를 만들려고합니다. 일부 유형은 기본 객체를 작성한 편리한 하위 유형을 포함합니다.GoLang의 임베디드 메서드에 액세스
'값 인터페이스 {}'에 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]"
}
'interface {} '에 대한 자세한 내용은 http://stackoverflow.com/a/23148998/6309를 참조하십시오. – VonC
Go에서 "클래식"OOP를 수행하려는 경우 실망하게됩니다. Go-like 솔루션을 찾을 수 없습니까? – Volker
Go에서 클래스 스타일의 객체 지향 코드를 작성하려고하지 않는 것이 좋습니다. Go에는 클래스, 서브 클래스, 상속 등이 없습니다. – JimB