go-包引入的不同方式-点,下划线与别名操作

今天在使用go语言进行数据库连接的时候,发现了一种很特别的包导入方式

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
)

包前面有个下划线,这是怎么意思呢?

怀着好奇的态度去研究了一下包的导入方式,发现有好几种特殊的导入方法,让我们一一去揭开它的神秘面纱。

  • 正常导包
import (
	"fmt"				// 标准库
  "./hello"		// 相对路径导入,当前文件同一及的hello文件夹
  "util/txt"	// 绝对路径导入,加载 GOPATH/src/util/txt 模块
)

func main() {
	fmt.Println("hello world!")
}

这是 go 语言最正常的导入包,fmt 是go语言的标准库,它是去 GOROOT 下加载该模块。

  • 点导包

java 同学应该很好理解,她就是 java 中的静态导包

import {
  . "fmt"	// 在使用这个包下的方法时,可以省略前面的包名
}

func main() {
  Println("hello world!")		// 省略 fmt  
}
  • 别名导包
import {
  f "fmt"	// 给当前的 fmt 定义一个别名
}

func main() {
  f.Println("hello world!")		// fmt -> f  
}
  • 下划线导包

凡是下划线导入的包,会自动执行包下的所有 init() 方法,我感觉特别适合驱动的加载,比如数据库驱动

import {
  _ "github.com/go-sql-driver/mysql"		// 自动加载mysql驱动中的init方法
    "github.com/jinzhu/gorm"
import {

当导入一个包时,它所有的init()函数就会被执行,但有些时候并非真的需要使用这些包,仅仅是希望它的init()函数被执 行而已。这个时候就可以使用_操作引用该包了。即使用 _ 操作引用包是无法通过包名来调用包中的导出函数,而是只是为了简单的调用其 init()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值