首页 > 文章列表 > 判断变量的数据类型是否为字符串/整数/浮点数?

判断变量的数据类型是否为字符串/整数/浮点数?

257 2024-03-13
问题内容

得到这种类型的 map[string]interface{} 因为我想允许同时包含 stringsintegers 的地图

但是如何将地图转换为 map[string]string 并在任何值“不支持”时返回错误?

value, ok := v.(string)

如果该值为整数,则会抛出错误


正确答案


Go 支持类型开关

对于您的用例,它看起来像:

m := map[string]string{}
for k,v := range values {
    switch value := v.(type) {
        switch value := v.(type) {
        case int:
            m[k] = fmt.Sprintf("%v", value)

        case float64:
            m[k] = fmt.Sprintf("%v", value)

        case string:
            m[k] = fmt.Sprintf("%v", value)

       default:
            return nil,fmt.Errorf("unknown type %T", v)
    }
}

return m,nil

如果您愿意,您可以将这些案例合并为一个案例,例如https://play.golang.com/p/XrM7ABJ8Gok