据我所知,golang没有类型变量。那我该如何干燥这两个功能呢?
func merge_modes32(nm map[uint32]pb.Mode, om map[uint32]pb.Mode) {
for k, v := range nm {
om[k] = v
}
}
func merge_modes64(nm map[uint64]pb.Mode, om map[uint64]pb.Mode) {
for k, v := range nm {
om[k] = v
}
}
答案 0 :(得分:3)
您不能以与性能接近的方式来“干燥”。您可以使用反射,但是生成的代码将大大降低速度。
该怎么办?在泛型到达之前(也许在Go 2中?),您可以继续为所有必需的类型创建此类函数,或者仅在需要的地方使用for
循环。只需3行代码,包括循环和括号...