У меня часто возникает ситуация, когда я ожидаю int
(любого типа, int/int8/16/32/64
) и проверяю его с помощью переключателя типа
switch t := v.(type) {
case int, int8, int16, int32, int64:
// cast to int64
case uint, uint8, uint16, uint32, uint64:
// cast to uint64
}
Теперь я не могу использовать прямой трансляции, потому что t
в этом случае будет иметь тип interface{}
. Действительно ли я должен разбить это на case
для каждого целочисленного типа?
Я знаю, что я мог бы сделать это через отражение с помощью reflect.ValueOf(v).Int()
, но не должен ли быть лучший (менее многословный) способ сделать это?
UPDATE:
Подал сбой, и Роб посоветовал просто использовать reflect
в этом случае.