• go 下划线


    一、简介

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

    二、在import中的作用

    例:
    main.go

    package main
    
    import _ "./hello"
    
    func main() {
        // hello.Print() 
        //编译报错:./main.go:6:5: undefined: hello
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    hello.go

    package hello
    
    import "fmt"
    
    func init() {
        fmt.Println("imp-init() come here.")
    }
    
    func Print() {
        fmt.Println("Hello!")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    结果:

    imp-init() come here.
    
    • 1

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

    常用mysql例:

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

    分析: 第二个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])
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    分析: 下划线意思是忽略这个变量,比如os.Open,返回值为*os.File,error, 普通写法是f,err := os.Open("xxxxxxx"),如果此时不需要知道返回的错误值,就可以用f, _ := os.Open("xxxxxx"),如此则忽略了error变量。

  • 相关阅读:
    PlotNeuralNet resnet34和resnet18绘图
    PMP每日一练 | 考试不迷路-11.18(包含敏捷+多选)
    golang flag 包的使用指北
    【微信小程序入门到精通】— 微信小程序开发工具的安装
    实现打包后暴露可修改接口地址文件
    图解隐马尔可夫模型(HMM)
    git教程(1)---本地仓库操作
    PyTorch随机生成一个布尔型张量
    MySQL调优随笔
    B站每日自动签到&传统单节点网站的 Serverless 上云
  • 原文地址:https://blog.csdn.net/change_any_time/article/details/125484595