Avatar ·

Go中导入前的下划线符号是什么意思?

你好!我开始学习Go,遇到了一个我不理解的构造。在别人的代码中,我看到了这样的导入: ```go import ( "fmt" _ "image/png" "os" ) ``` 让我困惑的是`"image/png"`字符串前的下划线(`_`)。我知道在Go中,未使用的导入会导致编译错误,但这里显然有别的含义。 我尝试删除这个导入,代码就无法工作了——程序无法解码PNG图像。而且我没有直接调用`image/png`包中的任何函数。这是如何工作的?如果我们没有显式使用包中的函数,为什么需要这样的导入? 在文档中我找到了关于`init()`函数的提及,但没有完全理解它是如何关联的。请解释一下导入前的下划线是做什么用的,以及在什么情况下它可能有用。是否有任何陷阱或最佳实践? 谢谢! <<>>

什么是导入中的“空标识符”?

下划线符号(