考虑下面的结构Foo和处理多种类型的目标(其中Handle可能Read,Write等等)。我知道当我们使用空接口时,我们会丢失编译时类型检查,但除此之外,每个接口的优缺点是什么?最后,实现这一目标的最惯用的方法是什么?
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
}
繁星淼淼
紫衣仙女
相关分类