`

Go中的下划线

    博客分类:
  • GO
 
阅读更多

https://studygolang.com/articles/6152

 

1.下划线在import中

  在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之。

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

package main

import _ "hello/imp"

func main() {
    //imp.Print() //编译报错,说:undefined: imp
}

init.go

package imp

import "fmt"

func init() {
    fmt.Println("imp-init() come here.")
}

func Print() {
    fmt.Println("Hello!")
}

输出结果:

imp-init() come here.

2.下划线在代码中

    package main

    import (
        "os"
    )

    func main() {
        buf := make([]byte, 1024)
        f, _ := os.Open("/Users/samchen/Music/text.txt")
        defer f.Close()
        for {
            n, _ := f.Read(buf)
            if n == 0 {
                break

        }
        os.Stdout.Write(buf[:n])
    }

解释1:

下划线意思是忽略这个变量.

比如os.Open,返回值为*os.File,error

普通写法是f,err := os.Open(xxxxxxx)

如果此时不需要知道返回的错误值

就可以用f, _ := os.Open(xxxxxx)

如此则忽略了error变量

解释2:

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

补充:

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

第二个import就是不直接使用mysql包,只是执行一下这个包的init函数,把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了。

分享到:
评论

相关推荐

    详解Golang中下划线的使用方法

    在 Golang 中,下划线(_)是一个特殊标识符,具有多种用途。本文将详细介绍其在不同场景下的使用方法。 首先,下划线在导入包时发挥作用。当我们需要导入一个包来执行初始化操作,但并不直接使用包内的具体功能时...

    Go语言json编码驼峰转下划线、下划线转驼峰的实现

    通过以上方法,我们可以方便地在Go语言中实现JSON编码时字段名的格式转换,无论是从大写驼峰转换为下划线分隔的小写字母还是相反方向的转换都变得简单易行。这种方法不仅可以提高代码的可读性和可维护性,还能帮助...

    UnderlineToCamelUtil下划线与驼峰相互转换工具下划线与驼峰相互转换工具

    下划线与驼峰相互转换工具

    20小时入门学会go语言.docx

    Go语言,又称Golang,是由Google公司设计的一种静态类型的、垃圾回收的、编译型的、并发型且具有垃圾回收功能的编程语言。它旨在提高开发效率,兼顾运行速度,使得开发者能够在保持高效性能的同时,享受到简洁的语法...

    Go语言学习笔记

    "Go语言学习笔记" Go语言学习笔记是关于Go语言基础入门篇的笔记,主要介绍Go语言基础语法、数据类型、逻辑语句等相关知识点。 语言概述 Go语言是一种开源的编程语言,能让构造简单、可靠且高效的软件变得容易。Go...

    Go-UniPDF-用于创建和处理PDF文件的GolangPDF库纯go

    在实际项目中,你可以根据需要选择安装这个版本的库,利用Go语言的简洁和高效特性,灵活地处理PDF文件,提升工作效率。 总结来说,Go-UniPDF是一个功能强大且全面的Golang PDF库,它为开发者提供了处理PDF文件的...

    Go-Golang笔记

    Go语言,也称为Golang,是由Google开发的...Go-Golang笔记旨在帮助初学者和进阶者全面理解Go语言,并在实际项目中得心应手。在golang-master这个压缩包中,可能包含了相关的学习资料和示例代码,是学习Go语言的好资源。

    用GO语言实现C语言词法分析器.pdf

    GO语言实现C语言词法分析器的知识点涉及编译原理的...通过将GO语言应用于编译器前端技术的实践,既能够加深对编译原理的理解,也能够体会到GO语言在系统开发中的实用价值,对计算机科学专业学生具有较高的教育意义。

    浅谈python 里面的单下划线与双下划线的区别

    在我看到上面的文章之前,我一直以为Python中这些下划线的作用就像Golang中方法/函数的大小写一样,或是一些其他语言中的 private 、 public 的作用一样,但仔细深究,这不全是Python这样设计的初衷。下面我们具体...

    nameconv:驼峰,标题和下划线之间的转换

    名称转换驼峰,标题和下划线之间的转换。安装go get github.com/zhgo/nameconv版权版权所有2015 zhgo作者。 版权所有。 此源代码的使用受可在LICENSE文件中找到的BSD样式的许可证约束。

    Go编程语言规范

    - Go语言中的字符包含字母和数字,字母可以是Unicode字符集中的大写字母(Lu)、小写字母(Ll)、标题字母(Lt)、修饰字母(Lm)或其他字母(Lo)。 - 数字则对应Unicode标准中的数字字符(Nd)。 - 标识符由...

    实效GO编程

    此外,结合语言规范、Go语言之旅以及如何使用Go编程,读者能够得到一个全面的Go语言学习体验,并在实践中不断提高编程技能。中英双语版的出现,更使得这份教程面向了更广泛的读者群体,对于那些希望在提升编程能力的...

    一文了解Go语言中编码规范的使用

    本文将深入探讨Go语言中的编码规范,帮助开发者写出更加优雅、易读的代码。 1. **文件命名**: - 文件名应全为小写字母,不同单词间使用下划线分隔。 - 测试文件以 `_test.go` 结尾。 - 平台特定的文件,如 `...

    Go编程语言规范1

    在Go语言中,标识符是由字母、数字和下划线组成的符号,用于表示变量、函数、类型等。Go语言中有多种类型的标识符,包括关键字、操作符、分隔符、常量类型、方法集、布尔类型、数值类型、字符串类型、数组类型、分片...

    一周学会go语言并应用.docx

    Go语言,又称Golang,是由Google的三位著名工程师——Robert Griesemer、Ken Thompson和Rob Pike于2007年设计的一种编程语言。其诞生背景是对C++11复杂特性的批评,旨在创造一个适用于网络和多核计算时代的简洁、...

    2.Golang的基础语法(分隔符,注释,标识符,字符串拼接,空格)1

    在Go语言中,声明变量时通常需要使用空格来分隔变量名和它们的值。例如: ```go var hacker_id string ``` 此外,为了提高代码的可读性,建议在运算符周围使用空格,尤其是在函数调用和拼接字符串时。虽然这不强制...

    Go语言编程-v1.0.0.pdf

    综上所述,《Go语言编程-v1.0.0.pdf》涵盖了Go语言的基础概念、核心语法以及其在现代编程中的应用优势。对于初学者而言,这是一份非常实用的学习资料,不仅能够帮助理解Go语言的特点,还能够快速上手编写程序。

    Golang 下划线语义

    丢弃返回值 _,err := Test() 用在变量接口断言 用来判断对象是否实现了接口 package main import ( fmt yangxd/te ) var _ Foo = Dog{} // 如果没有实现 则 会编译失败 用来判断Dog 对象是否实现了Foo 接口 ...

Global site tag (gtag.js) - Google Analytics