go - 我应该能够键入断言一段字符串映射吗?

标签 go

我正在使用 Go NSQ library 接收消息其中字段是 map[string]string 的一部分。我觉得我应该能够将此字段断言为 value.([]map[string]string) 但它失败了,我无法判断这是否是预期的。

这个片段复制了行为 https://play.golang.org/p/qcZM880Nal

为什么这个类型断言会失败?

最佳答案

这是简要介绍 here in the FAQ .

类型 []interface{}[]map[string]string 在内存中有两种不同的表示。没有直接的方法可以在它们之间进行转换。

此外,即使允许转换,您也应该注意,您根本无法成功断言到不同的基本类型 (http://play.golang.org/p/zMp1qebIZZ)。你只能断言到原始类型,或者其他类型的接口(interface),

// panics
var i interface{} = int32(42)
_ = i.(int64)

关于go - 我应该能够键入断言一段字符串映射吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530952/

相关文章:

go - cmd.ExtraFiles 尝试通过管道传输时失败

go - 我不能再运行 Go 程序了

mongodb - 如何更新文档中数组中的字段

CGo 将 go 字符串转换为 *C.uchar

go - 在 Golang 中使用库

debugging - 运行 dlv debug test.go 时无法在二进制文件中找到 __debug__ 行部分

go - []int 类型没有字段或方法长度

go - panic : runtime error: makeslice: cap out of range

go - 调用 c 函数, "import fmt"的顺序, "import C"导致构建错误,为什么?

pointers - Go中接口(interface)类型的间接