golang interface是不同类型的数字判断并转成int
在Go中,如果需要将一个接口值转换为int类型,可以使用类型断言来实现。以下是一个示例代码:
func convertToInt(i interface{}) (int, error) {
switch v := i.(type) {
case int:
return v, nil
case float64:
return int(v), nil
case string:
n, err := strconv.Atoi(v)
if err != nil {
return 0, err
}
return n, nil
default:
return 0, fmt.Errorf("invalid type %T, expected int, float64 or string", i)
}
}
在上面的代码中,我们定义了一个函数convertToInt,它接受一个interface{}类型的参数并返回一个int类型的值。在函数内部,我们使用了一个switch语句来判断接口值的类型,并将其转换为int类型。
如果接口值是int类型,我们直接返回其值。
如果接口值是float64类型,我们使用int函数将其转换为int类型。
如果接口值是string类型,我们使用strconv.Atoi函数将其转换为int类型。
如果接口值的类型不是int、float64或string,则返回一个错误。
使用该函数的方式如下:
i := 42
n, err := convertToInt(i)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
f := 3.14
n, err = convertToInt(f)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
s := "123"
n, err = convertToInt(s)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(n)
}
输出:
42
3
123
原文地址: https://www.cveoy.top/t/topic/b1y1 著作权归作者所有。请勿转载和采集!