Я знаю, что 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
Есть ли способ сделать это без такого количества избыточного кода?