我想定义一个安全划分,例如:
func safeDivide(a, b interface{}) interface{} {
if b == 0 {
return 0
}
return a / b
}
显然,这个功能是行不通的。我们不能划分接口。一种解决方案是判断输入的类型并进行划分。
switch reflect.ValueOf(x).Kind() {
case reflect.Int:
// balabala...
不过看起来多余,我必须处理好每一个案件。
那么我是否可以使用反射来保证输入的类型?我尝试过reflect.TypeOf()但失败了。
顺便说一句,我注意到这一点:
a := uint32(0)
ifZero(a) // outputs "no"
func ifZero(a interface{}) {
if a == 0 {
log.Println("yes")
return
}
log.Println("no")
}
这意味着 golang 本身无法处理类型问题,对吗?
慕森王
相关分类