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

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

此问题在此处已有答案

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

  1. value, ok := v.(string)

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

kxe2p93d

kxe2p93d1#

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

  1. m := map[string]string{}
  2. for k,v := range values {
  3. switch value := v.(type) {
  4. switch value := v.(type) {
  5. case int:
  6. m[k] = fmt.Sprintf("%v", value)
  7. case float64:
  8. m[k] = fmt.Sprintf("%v", value)
  9. case string:
  10. m[k] = fmt.Sprintf("%v", value)
  11. default:
  12. return nil,fmt.Errorf("unknown type %T", v)
  13. }
  14. }
  15. return m,nil

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

展开查看全部

相关问题