当前位置: 首页 > news >正文

为什么 import _ “github.com/go-sql-driver/mysql“ 要导入但不使用?_ 是什么意思?

import _ "github.com/go-sql-driver/mysql"

这是 “匿名导入”,它的目的是:执行该包的 init() 函数,但不使用包里的其他标识符(函数、变量等)。

为什么这样做?
以 MySQL 驱动为例,database/sql 是 Go 标准库,提供统一的数据库接口:

sql.Open("mysql", "...")

你会发现这里的 “mysql” 是个字符串,但 database/sql 并不知道这个驱动实现在哪或者这个驱动是什么(因为有很多数据库驱动,这里只是一个字符串)。

所以:我们必须显式告诉 Go 去“注册”这个 “mysql” 驱动。
而 mysql 驱动包里的 init() 函数正好做了这件事:
✅ mysql 驱动内部大概这样写的:

func init() {sql.Register("mysql", &MySQLDriver{})
}

所以你导入这个包的唯一目的就是:让它自动注册进 Go 的数据库驱动系统中。

✅ 为什么用 _?
_ 表示“匿名导入”:只执行 init(),但不引入包名。
如果你写成普通导入:

import "github.com/go-sql-driver/mysql"

编译器会报错:“imported and not used”。
因为你确实没有用到这个包里的任何显式符号。

http://www.dtcms.com/a/188902.html

相关文章:

  • 中电金信参编的国家标准《信息技术 中间件 消息中间件技术要求》正式发布
  • 1.3 不确定性分析
  • 云蝠智能大模型呼叫优势:技术驱动全链路升级,重塑智能交互服务新体验
  • 【JavaScript】原生 JavaScript 实现 localStorage 过期时间
  • ubuntu----100,常用命令2
  • 裸机开发的核心技术:轮询、中断与DMA
  • 定制化项目变更通知延误、流程失控?日事清用条件分支判断规范跨部门协作与变更管理流程
  • STM32 __main
  • Python实验2
  • win10 局域网内聊天
  • 《Python星球日记》 第67天:Transformer 架构与自注意力机制
  • vscode 同一个工作区,不同文件夹之间跳转问题
  • git 怎么更改本地的存储的密码
  • HCIP实验(BGP联邦实验)
  • Linux—进度条实现
  • upload-labs通关笔记-第4关 文件上传之.htacess绕过
  • FFmpeg3.4 libavcodec协议框架增加新的decode协议
  • HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(一、开篇,项目介绍)
  • 物理:由基本粒子组成的个体能否提炼和重组?
  • Realman RM65-B 六自由度超轻量仿人机械臂
  • openjdk底层汇编指令调用(三)——编码
  • CSS可以继承的样式汇总
  • 【fastadmin开发实战】在前端页面中使用bootstraptable以及表格中实现文件上传
  • 使用全局状态管理(Vuex)实现数据共享​
  • “新五强”争锋,基础大模型玩家再洗牌
  • RTSP有两套格式吗?
  • 从数据中台到数据飞轮:实现数据驱动的升级之路
  • 【C++进阶篇】二叉搜索树的实现(赋源码)
  • 量化感知训练与 PyTorch 的哪些事
  • rocketMq实例