我经常遇到一种情况,我期望一个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
在这种情况下将是 type interface{}
。case
对于每个整数类型,我真的必须将其拆分为s 吗?
我知道我可以通过使用反射来做到这一点reflect.ValueOf(v).Int()
,但不应该有更好(不那么冗长)的方式来做到这一点吗?
更新:
提出了一个问题,Rob 建议只reflect
在这种情况下使用。