1、连接数据库首先需要有连接驱动,因为官方没有实现,所以需要用到三方已经实现的驱动依赖包 : github.com/go-sql-driver/mysql,下载依赖包可以通过cmd命令的方式直接下载 : go get github.com/go-sql-driver/mysql ;
下载成功后悔保存到当前系统的GOPATH目录下的src子目录中,关于修改GOPATH请参考Windows7系统修改GO语言环境变量(GOPATH)
2、连接数据库需要导入包:

import (
	"database/sql"
	"fmt"
	/*
		必须导入这个支持数据库的三方依赖,
		否则runtime error: invalid memory address or nil pointer dereference
	*/
	_ "github.com/go-sql-driver/mysql"
)

golang语言的import中使用“_”表示导入的这个包下面的所有init()函数都会被执行,此外包中的其他函数是无法调用的;
3、以下为全部代码,亲测可用,

package main

import (
	"database/sql"
	"fmt"
	/*
		必须导入这个支持数据库的三方依赖,
		否则runtime error: invalid memory address or nil pointer dereference
	*/
	_ "github.com/go-sql-driver/mysql"
	/*
		import导入中“_”前置符号表示这个被导入的包中所有的init()函数都会被执行,但是其他的函数无法调用
		init()函数不能被调用,会优先main()函数被执行,不需要参数,也不需要返回值,一个包中可以包含多个init()函数
	*/)

func main() {
	fmt.Println("Hello World!")
	mysqlConnet()
}

func mysqlConnet() {
	//创建sql.DB连接池,sql.Open()返回*sql.DB,err
	/*
		Open()方法参数 :
		第一个参数是驱动程序名称。这是驱动程序用于注册的字符串
		第二个参数是驱动程序特定的语法,告诉驱动程序如何访问底层数据存储,shiro_test为databaseName
		参数信息可以抽出为结构体struct
	*/
	DB, _ := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/shiro_test?charset=utf8")
	//设置最大连接周期
	DB.SetConnMaxLifetime(100)
	//设置数据库最大闲置连接数
	DB.SetMaxIdleConns(10)
	//DB.Ping()验证连接
	if err := DB.Ping(); err != nil {
		fmt.Println("open dataBase fail")
		return
	}
	fmt.Println("open dataBase success")
	defer DB.Close() //关闭
	/*
	   defer关键字后的代码块必定会被执行,而且被执行的必定是函数调用语句
	*/
}