Go がテンプレートやオーバーロードされた関数をサポートしていないことは知っていますが、何らかのジェネリック プログラミングを行う方法はあるのでしょうか?
次のような多くの機能があります。
func (this Document) GetString(name string, default...string) string {
v, ok := this.GetValueFromDb(name)
if !ok {
if len(default) >= 1 {
return default[0]
} else {
return ""
}
}
return v.asString
}
func (this Document) GetInt(name string, default...int) int {
v, ok := this.GetValueFromDb(name)
if !ok {
if len(default) >= 1 {
return default[0]
} else {
return 0
}
}
return v.asInt
}
// etc. for many different types
冗長なコードをあまり使わずにこれを行う方法はありますか?