Go语言 检查变量是否为string/int/float?[重复]

nc1teljy  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(84)

此问题在此处已有答案

How to find the type of an object in Go?(16个回答)
10天前关闭。
得到了这个类型map[string]interface{},因为我想允许一个Map同时具有stringsintegers
但是如何将Map转换为map[string]string并在任何值“不支持”时返回错误呢?

value, ok := v.(string)

字符串
如果值是整数,则会抛出错误

kxe2p93d

kxe2p93d1#

Go支持type switches
对于您的用例,它看起来像这样:

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

相关问题