你如何在Go中转换为自定义类型的地图?

时间:2014-01-21 07:20:25

标签: go

我定义了自定义类型:

type Thingy map[string]interface{}

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

func f(arg interface{})

我想做的是能够将arg转换为Thingy类型的变量。我必须误解Go的一些基本原因,因为我无法让它发挥作用:

t, ok := arg.(Thingy)

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

1 个答案:

答案 0 :(得分:3)

  1. 这不是演员,而是一种类型断言。
  2. 您没有传递Thingy,而是传递map[string]interface{}
  3. 重要的是要理解,因为类型看起来相似,这并不意味着您可以互换使用它们。当有方法集时,这是最重要的。即使基础类型相同,也必须区分对两种不同类型的x()的调用。