一、简介
“_”是特殊标识符,用来忽略结果。
二、在import中的作用
例: main.go
package main
import _ "./hello"
func main() {
}
hello.go
package hello
import "fmt"
func init() {
fmt.Println("imp-init() come here.")
}
func Print() {
fmt.Println("Hello!")
}
结果:
imp-init() come here.
分析: import 下划线(如:import _ hello/imp )的作用:当导入一个包时,该包下的文件里所有init() 函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】 只是引用该包,仅仅是为了调用init() 函数,所以无法通过包名来调用包中的其他函数。
常用mysql例:
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
分析: 第二个import就是不直接使用mysql包,只是执行一下这个包的init函数,把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了
三、在代码语句中的作用
例:
package main
import (
"os"
)
func main() {
buf := make([]byte, 1024)
f, _ := os.Open("/Users/***/Desktop/text.txt")
defer f.Close()
for {
n, _ := f.Read(buf)
if n == 0 {
break
}
os.Stdout.Write(buf[:n])
}
}
分析: 下划线意思是忽略这个变量,比如os.Open,返回值为*os.File,error, 普通写法是f,err := os.Open("xxxxxxx") ,如果此时不需要知道返回的错误值,就可以用f, _ := os.Open("xxxxxx") ,如此则忽略了error变量。
|