邏輯如何去這裏目前還不清楚,但在進入一個常見的模式是封裝在另一個結構中的共享功能類型,然後將它嵌入到你的類型:
type sharedFunctionality struct{}
func (*sharedFunctionality) Do() {}
type type1 struct{ sharedFunctionality }
type type2 struct{ sharedFunctionality }
現在你可以在type1
和type2
情況或任何其他類型的呼叫Do()
你需要這個功能。
編輯:根據你的評論,你可以重新定義一些等價的類型,如t1
和t2
遵循這樣所需的協議(具有Do()
方法):
func main() {
var j job
j = new(t1)
j.Do()
j = new(t2)
j.Do()
}
type job interface {
Do()
}
type t1 another.Type1
func (*t1) Do() {}
type t2 yetanother.Type2
func (*t2) Do() {}
這裏的類型another.Type1
和yetanother.Type2
不是由你定義的,而是一些其他的包裝設計師。但是,你可以做任何與t1
和t2
邏輯需求 - 儘可能公共成員去,或者如果你願意與反思的東西:)
如果,你想在你的'Do'功能使用類型之間有一些共性,可以封裝在一個接口和定義接口'Do'。如果你提供了更多關於你的類型和功能的信息,我或其他人可以給你一個具體的例子。 –