Я использую библиотеку, которая принимает только float64
в качестве аргумента функции, но мой код может публиковать числа любого типа в interface{}
, что означает int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64
.
Как я могу написать элегантную функцию, которая утверждает для всех этих типов?
Я думал о чем-то вроде:
if i, ok := event.Value.(int); ok {
value = float64(i)
} else if f, ok := event.Value.(float64); ok {
value = f
} else {
... error and return
}
с одним else if
на тип.
Я уверен, что где-то есть что-то более эффективное / элегантное!
Спасибо