Go编程语言规范指出:“要仅出于副作用(初始化)的目的导入软件包,请使用空白标识符作为显式软件包名称。”
例如:
import _ "foo/bar"
我很难想象这种构造的用例。可接受的“import”语句用法答案提到了一个用例,其中可以在不需要导入程序使用该包的任何导出功能的情况下加载数据库驱动程序,但是它使细节遗漏了读者的想象力。
是否有现实生活中的示例(带有代码片段和说明)来说明此用例?
我正在编写一个调整图像大小的程序。我希望它能够识别 JPEG , PNG , GIF 等不同格式的图像并将其转换为 JPEG 。
因此,除了image和image/jpeg包之外,我还必须导入image/png并且image/gif仅注册各自的解码器。
image
image/jpeg
image/png
image/gif
如果没有导入,则缩放器将 只能 读取 JPEG 图像。
package main import( "image" "image/jpeg" // I wanted to export the images as JPEG _ "image/png" _ "image/gif" ) // ...
image软件包中的相关文档:
解码任何特定的图像格式需要事先注册解码器功能。通常,注册是自动的,这是初始化该格式的软件包的副作用,以便对PNG图像进行解码,只要满足以下条件: import _ "image/png"
解码任何特定的图像格式需要事先注册解码器功能。通常,注册是自动的,这是初始化该格式的软件包的副作用,以便对PNG图像进行解码,只要满足以下条件:
import _ "image/png"