当前位置: 首页 > 面试题库 >

在golang中使用空白标识符导入的用例

饶骁
2023-03-14
问题内容

Go编程语言规范指出:“要仅出于副作用(初始化)的目的导入软件包,请使用空白标识符作为显式软件包名称。”

例如:

import _ "foo/bar"

我很难想象这种构造的用例。可接受的“import”语句用法答案提到了一个用例,其中可以在不需要导入程序使用该包的任何导出功能的情况下加载数据库驱动程序,但是它使细节遗漏了读者的想象力。

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


问题答案:

我正在编写一个调整图像大小的程序。我希望它能够识别 JPEGPNGGIF 等不同格式的图像并将其转换为 JPEG

因此,除了imageimage/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"


 类似资料:
  • The blank identifier 空白标识符 We’ve mentioned the blank identifier a couple of times now, in the context of for range loops and maps. The blank identifier can be assigned or declared with any value of an

  • 问题内容: 当我阅读Go文档时,我发现了这一点: 您可以通过尝试分配,要求编译器检查类型T是否实现了接口I: 我不了解_的用途,并且在其他作业中也见过_,但无法理解它的含义。深入研究,我发现它被称为“空白标识符”,但我不理解他们放置的用例: 惯用语对我还是有点陌生​​,所以我试图理解为什么我想做这样的事情。 问题答案: 是一个特殊的标识符,您可以为其分配任何内容,但永远不要读取。在第一个示例中,您

  • 问题内容: 我发现了这个变量声明,我想知道它的目的是什么。它似乎没有初始化任何东西,并且因为它使用空白标识符,所以我想您无法访问它。 问题答案: 这是一个类型满足接口的编译时断言。当类型的方法集是该接口的方法集的超集时,该类型将实现接口。 如果类型不能满足接口要求,则编译将退出,并显示类似以下错误: 运作方式如下。该代码声明了一个类型为的未命名变量。该表达式 将无类型的nil 转换为type的ni

  • 嗨 我们如何识别空白图像(白色图像), 我传递的图像是空的,有一些高度和宽度,我想识别它

  • 本文向大家介绍C#在标识符中使用转义序列,包括了C#在标识符中使用转义序列的使用技巧和注意事项,需要的朋友参考一下 示例 转义序列不限于string和char文字。 假设您需要重写第三方方法: 并假定该字符Œ在用于C#源文件的字符编码中不可用。你是幸运的,它允许使用的类型逃逸\u####或者\U########在标识中的代码。所以写是合法的: 并且C#编译器将知道Œ并且\u0152是相同的字符。

  • 问题内容: CSS标识符和的(完整)有效/允许的 字符集 字符是什么? 是否可以使用正则表达式进行验证?它与浏览器无关吗? 问题答案: 字符集无关紧要。允许的字符更重要。检查CSS规范。这里是相关的: 在CSS中,标识符(包括选择器中的元素名称,类和ID )只能包含字符和ISO 10646 及更高版本的字符,以及连字符()和下划线();它们不能以数字,两个连字符或连字符后跟数字开头。标识符还可以包