如何摆脱此代码中的重复项?
我想过使用生成生成代码,但我认为会得到相同的结果。另一方面,我认为使用界面,但不知道如何申请(我知道如何使用它们,但不是在特定情况下)。
package main
import "fmt"
type First struct {
X int
Y float64
}
type Second struct {
I float64
J int
}
func ListFirsts(db map[string]map[int]interface{}) []First {
ans := []First{}
for _, v := range db["Firsts"] {
ans = append(ans, v.(First))
}
return ans
}
func ListSeconds(db map[string]map[int]interface{}) []Second {
ans := []Second{}
for _, v := range db["Seconds"] {
ans = append(ans, v.(Second))
}
return ans
}
func main() {
db := map[string]map[int]interface{}{
"Firsts": {
1: First{1, 2},
2: First{2, 3},
},
"Seconds": {
1: Second{11.2, 2},
2: Second{2, 3},
},
}
fmt.Println(ListFirsts(db))
fmt.Println(ListSeconds(db))
}