鑑於以下結構Foo
和處理多種類型的目標(其中Handle
可能是Read
,Write
等)。我明白,當我們使用空的界面時,我們會失去編譯時類型檢查,但除此之外,每個類型的優缺點是什麼?最後,實現這個目標的最習慣的方式是什麼?一種功能開啓的類型vs許多類型的功能
package main
type Foo struct {
A int
B string
}
//Handle all types with switch
func (f *Foo) Handle(obj interface{}) {
switch obj := obj.(type) {
case int:
//do int stuff...
f.A + obj
case string:
//do string stuff...
f.B + obj
default:
panic("Unknown type")
}
}
//Handle each type individually
func (f *Foo) HandleInt(i int) {
//do int stuff...
f.A + i
}
func (f *Foo) HandleString(s string) {
//do string stuff...
f.B + s
}
是的,[u] int類型的數量實際上讓我感到困擾。我並不期待每個內置類型都有一個方法。美學上,我寧願有一種方法並記錄下來。此外,可能包括3種特定方法和1種通用方法(兩種方法)都會混淆用戶。 – jpillora 2014-08-30 07:14:11