如何编写DRY golang映射操作函数

时间:2018-10-31 21:20:35

标签: dictionary go dry

据我所知,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
    }
}

1 个答案:

答案 0 :(得分:3)

您不能以与性能接近的方式来“干燥”。您可以使用反射,但是生成的代码将大大降低速度。

该怎么办?在泛型到达之前(也许在Go 2中?),您可以继续为所有必需的类型创建此类函数,或者仅在需要的地方使用for循环。只需3行代码,包括循环和括号...