for _, user := range l { if user.GetID() == id { return user } } return nil } 複数型共通処理を type Books []*Book func (l Books) Find(id uint) *Book { for _, book := range l { if book.GetID() == id { return book } } return nil } 具体的な型で量産 には generics がなかった! 任意処理を複数型でも一元的に利用するシンプルな方法がなかった。 (だからコード生成をするといソリューションが多いように感じる)
type Record interface { GetID() uint } type Records[T Record] []*T func (l Records[T]) Find(id uint) *T { for _, item := range l { if (*item).GetID() == id { return item } } return nil } 一回書くだけで OK !