1. 下划线

    “_”是特殊标识符,用来忽略结果。

       import 下划线(如:import hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。 示例:

    1. |
    2. +--- main.go
    3. |
    4. +--- hello
    5. |
    6. +--- hello.go
    1. package main
    2. import _ "./hello"
    3. func main() {
    4. //编译报错:./main.go:6:5: undefined: hello

    hello.go

    输出结果:

    1. imp-init() come here.

    1.1.2. 下划线在代码中

    1. package main
    2. import (
    3. "os"
    4. )
    5. func main() {
    6. buf := make([]byte, 1024)
    7. f, _ := os.Open("/Users/***/Desktop/text.txt")
    8. defer f.Close()
    9. for {
    10. break
    11. }
    12. os.Stdout.Write(buf[:n])
    13. }
    14. }

    解释2:

    1. 占位符,意思是那个位置本应赋给某个值,但是咱们不需要这个值。
    2. 所以就把该值赋给下划线,意思是丢掉不要。
    3. 这样编译器可以更好的优化,任何类型的单个值都可以丢给下划线。
    4. 这种情况是占位用的,方法返回两个结果,而你只想要一个结果。
    5. 那另一个就用 "_" 占位,而如果用变量的话,不使用,编译器是会报错的。

    补充:

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