Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。
但是import _ "github.com/go-sql-driver/mysql" 的意义不是很好理解。
为此,我通过自己写的三个简单程序,演示init()的注册行为。
代码的目录组织结构如下:
awesomeProject/talkischeap/main.go //主函数
awesomeProject/talkischeap/showmecode/main.go // 类型定义函数
awesomeProject/talkischeap/showyourcode/main.go //init()函数
主函数
package main
import "awesomeProject/talkischeap/showmecode" //类比database/sql
import _ "awesomeProject/talkischeap/showyourcode" //类比github.com/go-sql-driver/mysql
//import _ "github.com/go-sql-driver/mysql"
//import "database/sql"
func main() {
// 程序运行的顺序 (1)引入的包 (2) 当前包中的常量 (3) 当前包中的变量(4)当前包的init (5)main函数
//本例解释如下
//1. 导入showmecode包时,导入了showmecode的包中的变量driver,这是个