Звучит вроде бы не сложно, но в GO все числа полученные из json.Unmarshal имеют тип float64.
Что если мне нужно получать int и написать для этого какой-то хелпер. Чтобы прямо из "метода" получать значение присланных данных в запросе в нужном формате?
Лезу в документацию encode/json, нахожу метод декодера UseNumber(), который преобразует все числа вместо float64 в тип json.Number, который в свою очередь имеет несколько методов для преобразования в другие типы, но типы опять не те которые нужны, только int64, Float64, string
func (c *Controller) GetInt(name string) (i int) {
if val, status := c.Params[name]; status {
switch val.(type) {
case json.Number:
i64, _ := val.(json.Number).Int64()
i = int(i64)
}
}
return
}
Получается вот такой код, пришлось добавить конструкцию switch чтобы исключить панику если вдруг прилетит строка в json вместо числа. Функция работает, но как то сложновато, нет? Есть мысли как упростить?