在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
golang interface是不同类型的数字判断并转成int

原文地址: https://www.cveoy.top/t/topic/b1y1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录