前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >了解 go: blank import

了解 go: blank import

作者头像
运维开发王义杰
发布2023-08-10 17:01:53
发布2023-08-10 17:01:53
24000
代码可运行
举报
运行总次数:0
代码可运行

在Go语言中,如果你在导入包时前面加上了下划线 _,如 _ "github.com/my/package",那么这被称为“blank import”。这种导入方式的意思是:我想导入这个包,执行它的初始化函数(包括全局变量的初始化和init函数的执行),但我并不打算在代码中直接使用这个包的任何公开的标识符(例如函数、类型、变量等)。

在Go语言中,如果你导入了一个包,却没有在代码中使用它,编译器会报错,因为Go语言鼓励编写精简、无冗余的代码。然而,有些包在被导入时会执行一些有用的初始化工作,尽管我们并不需要直接使用它的任何函数或变量。在这种情况下,我们可以使用 blank import 来导入这个包。

对于这种导入方式,对应的包初始化顺序并没有特别之处。Go编译器会正常地执行该包的初始化过程,包括导入依赖的包、初始化全局变量、执行init函数等步骤。

举个例子,database/sql 包的驱动通常就是通过这种方式来注册的。一个数据库驱动包可能没有公开的函数或变量需要使用,它的所有工作可能都在初始化函数中完成,包括将自己注册到 database/sql 包。在这种情况下,我们就会使用 blank import 来导入这个驱动包:

代码语言:javascript
代码运行次数:0
运行
复制
import _ "github.com/go-sql-driver/mysql"

上面的代码将导入 MySQL 驱动,驱动会在初始化过程中注册自己,使得我们可以在 database/sql 包中使用它。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档