我有一個函數可以從一個數組數組中初始化結構數組。這是我正在做它目前:重構函數使它可以在類型中重用使用Go
type Loadable interface {
Load([]interface{})
}
type FooList struct {
Foos []*Foo
}
func (fl *FooList) Load(vals []interface{}) {
fl.Foos = make([]*Foo, len(vals))
for i, v := range vals {
foo := &Foo{}
foo.Load(v.([]interface{}))
fl.Foos[i] = foo
}
}
這只是正常的,但現在我還需要初始化BarLists和BazLists包含酒吧和Bazs。而不是整個灑我的代碼相同的片段,所有看起來像這樣:
type BarList struct {
Bars []*Bar
}
func (fl *BarList) Load(vals []interface{}) {
fl.Bars = make([]*Bar, len(vals))
for i, v := range vals {
bar := &Bar{}
bar.Load(v.([]interface{}))
fl.Bars[i] = bar
}
}
什麼是重構這個代碼,使其更乾燥的正確方法?
猜猜我還是習慣了沒有泛型。剪切和粘貼這麼多的代碼感覺不對,但似乎是一個合適的方式來做到這一點。謝謝! – Bill