golang 对导入库的未定义函数调用

golang undefined function call on imported library

我已经导入了

_ "github.com/mitchellh/mapstructure"

进入我的一个项目。但是我无法利用该库中包含的解码功能将地图接口转换为结构:

var result Person
err := Decode(input, &result)
if err != nil {
    panic(err)
}

这个基本调用returns"undefined: Decode"错误。除了导入还有什么要做的吗?

提前致谢!

如果您以 _ 作为第一个参数导入包,则您不能使用该包的任何函数或类型。 _ 表示您导入包只是为了调用 init() 函数的次要效果。

此外,您需要在函数前使用包名,在本例中为mapstructure.Decode。

或者,正如 Ainar-G 所指出的,您可以使用“.”而不是 _ 导入包时。这样您就可以将名称导入 "default" 命名空间,从而可以直接使用 Decode。但是,不建议这样做,因为您正在用其他名称污染命名空间,现在或将来可能会发生冲突。