Как я могу написать СУХИЕ функции манипуляции с картой Голанга - PullRequest
0 голосов
/ 01 ноября 2018

Насколько я знаю, у 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 голосов
/ 01 ноября 2018

Вы не можете «высушить» это способом, который будет близок по производительности. Вы можете использовать отражение, но результирующий код будет значительно медленнее.

Что делать? Пока не появятся дженерики (возможно, в Go 2?), Вы можете продолжать создавать такие функции для всех требуемых типов или просто использовать цикл for там, где это необходимо. Это всего лишь 3 строки кода, включая цикл и скобки ...

...