golang undefined函数调用导入的库

Jua*_*n M 0 import struct go

我已经进口了

_ "github.com/mitchellh/mapstructure"
Run Code Online (Sandbox Code Playgroud)

进入我的一个项目.但是我无法利用该库中包含的Decode函数将map接口转换为struct:

var result Person
err := Decode(input, &result)
if err != nil {
    panic(err)
}
Run Code Online (Sandbox Code Playgroud)

此基本调用返回"undefined:Decode"错误.除了导入之外还有什么要做的吗?

提前致谢!

sir*_*nga 8

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

另外,在这种情况下,您需要在函数之前使用包名称,mapstructure.Decode.

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