Go编程语言规范规定:"要仅出于副作用(初始化)导入包,请使用空白标识符作为显式包名称."

例如:

import _ "foo/bar"

我很难想象这个构造的用例.Usage of the `import` statement的可接受答案提到了一个用例,在该用例中,可以加载数据库驱动程序,而不需要导入程序使用该软件包的任何导出函数,但是它省略了细节,让读者可以想象.

是否有真实的示例(带有代码片段和说明)来说明此用例?

推荐答案

我正在编写一个调整图像大小的程序.我希望它能够识别不同格式的图像,如JPEG,PNG,GIF,并将它们转换为JPEG.

因此,除了imageimage/jpeg包之外,我还必须导入image/pngimage/gif才能注册它们各自的解码器.

如果我没有导入这些,scaler only将能够读取JPEG张图像.

package main

import(
  "image"
  "image/jpeg" // I wanted to export the images as JPEG
  _ "image/png"
  _ "image/gif"
)

// ...

image软件包中的相关文档:

解码任何特定的图像格式都需要事先注册解码器功能.注册通常是自动的,这是初始化该格式包的一个副作用,因此,要解码PNG图像,只需具备:

import _ "image/png"

Go相关问答推荐

Kafka消费者在需要时不会暂停

如何将文件从AWS S3存储桶复制到Azure BLOB存储

在Golang中Mergesort的递归/并行实现中出现死锁

如何用Golang解码这个嵌套的json?

如何用';贪婪原则';正确地

这是go语言gin提供的关于TypeEngine和RouterGroup的问题

无法读取postman 中的表单数据

切片的下限和上限

使用Dockertest进行Golang SQL单元测试的基本设置

如何用mpb创建两行进度条?

CORS grpc 网关 GoLang

致命错误:找不到由 zergon321/reisen 引起的libavcodec/avcodec.h文件

如何根据 Go 中第二次出现的分隔符拆分字符串?

如何将具有嵌入式 struct 的 struct 展平为 json

每次有人进入我的网站时如何运行特定功能?

在 go 中将运行命令的标准输出发送到其标准输入

出于某种原因,Golang (Go) AES CBC 密文被填充了 16 个 0x00 字节

正确编码 JWT

函数参数的判断顺序是什么?

关于GO的几个问题