得到这种类型的 map[string]interface{}
因为我想允许同时包含 strings
和 integers
的地图
但是如何将地图转换为 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