go - 如何将 Go 中的 map 类型转换为自定义类型?

标签 go

我定义了一个自定义类型:

type Thingy map[string]interface{}

我有一个传递空接口(interface)参数的函数:

func f(arg interface{})

我想做的是能够将 arg 类型转换为 Thingy 类型的变量。我一定是误解了 Go 的一些基本知识,因为我无法让它工作:

t, ok := arg.(Thingy)

ok 总是在那里返回 false。有任何想法吗?完整示例在这里:http://play.golang.org/p/TRZsX4v8-S

最佳答案

  1. 这不是强制转换,而是类型断言。
  2. 您传递的不是Thingy,而是map[string]interface{}

重要的是要理解,仅仅因为类型看起来相似,并不意味着您可以互换使用它们。当有方法集时,这是最重要的。对两种不同类型的 x() 的调用必须是可区分的,即使底层类型相同也是如此。

关于go - 如何将 Go 中的 map 类型转换为自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21251660/

相关文章:

go - 由于运行状况检查超时,BlueMix 未启动

go - 解析格式为 HHMMSS00 的时间

go - Go 中的 append() 是否按摊销常数时间运行?

html - 在Go中匹配html标记之外的html文本的最佳方法是什么?

postgresql - 将PostgreSQL查询转换为GORM查询

go - 观察 pod 状态的所有变化

c - 如何在go中将指向 slice 的指针传递给C函数

go - 在 Go 程序中返回的参数太多

java - Java 中有没有类似于 Go 的 Select 的关键字或方法?

go - 当我的通配符参数中有双斜杠时,为什么 Gorilla mux 会重定向?