Go 中的空白标识符下划线


Posted in Golang onMarch 25, 2022

Go 中的空白标识符下划线

与 Python 一样,Go 语言也有空白标识符。

1.什么是空白标识符

空白标识符是未使用的值的占位符。它由下划线(_)表示。由于空白标识符没有名称,因此它们也被称为匿名占位符。

在 Go 语言中, 不允许声明未使用的变量或导入语句。也就是说,我们无法声明变量并将其留下未使用。同样,如果您导入一个包,那么也必须使用它。

这个时候就需要一个空白标识符。

2.未使用的赋值变量

如果 Go 中的函数返回多个值,则必须定义相等数量的变量来保存这些值。但是,如果您只需要其中一些值而不需要其他值,若某次赋值需要匹配多个左值,但其中某个变量不会被程序使用, 那么用空白标识符来代替。该变量可避免创建无用的变量,并能清楚地表明该值将被丢弃。

如下所示:

result, error = Dosomething()
if error {
// handle error
}

在上面的代码中,​​result​​ 与程序无关,而且后续代码也没有使用它。如果编译的话,Go 编译器会报错。

result declared but not used

在这种情况下,您可以将结果替换为下划线或空白标识符,

如下所示:

_, error = Dosomething()
if error {
// handle error
}

即使您声明了一个变量,您也可以稍后使用空白标识符来忽略它,如下面的代码所示:

product, error = Dosomething()
if error {
// handle error
}
// ignore unused variable
_ = product

在 ​​for...range​​ 中使用空白标志符

func Sum(numbers []int) int {

sum := 0
for _, number := range numbers {
sum += number
}
return sum
}

3.未知的结构体

可以利用 ​​_​​ 分配任何东西:

var _ I = T{}

无法访问此变量,以便将从生成的程序中优化。但是,如果 T 类型未分配给接口 ​​I​​ ,则可能会导致编译错误。因此,在这种情况下,它被用作关于类型的静态断言。

4.未使用的包

在 Go 中,如果你导入一个包,那么你必须使用它,否则会出现编译器错误。

imported and not used “<package name>”

空白标识符可用于解决此编译器错误。

有两种方法可以使用空白标识符来解决未使用的包错误,如下所示:

第一种:声明一个全局空白标识符(在 ​​main()​​ 函数之前),该标识符从未使用的包中访问符号,例如下面代码中的 Open:

import "os"
var _ = os.Open
func main() {
}

第二种:在未使用的包前加上一个空白标识符,

如下所示:

import _ "os"

func main(){
}

空白标识符通过避免在整个代码中使用未使用的变量声明,使代码更具可读性。

5.总结

Golang 中任何声明但未使用的包和变量都会引发错误。这一规则使得我们的代码保持干净和轻量。

  • 有时如果需要在未来使用并提前导入一些软件包,就可以使用空白标识符。
  • 有时候函数会返回多个参数,但是我们只需要使用其中一个变量的时候,就可以通过空白标志符来进行接收。

到此这篇关于Go 中的空白标识符下划线的文章就介绍到这了,更多相关Go 空白标识符内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
Go各时间字符串使用解析
Apr 02 Golang
Go Gin实现文件上传下载的示例代码
Apr 02 Golang
go:垃圾回收GC触发条件详解
Apr 24 Golang
go语言-在mac下brew升级golang
Apr 25 Golang
golang正则之命名分组方式
Apr 25 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
Go 通过结构struct实现接口interface的问题
Oct 05 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 Golang
golang生成vcf通讯录格式文件详情
golang实现浏览器导出excel文件功能
Golang使用Panic与Recover进行错误捕获
Mar 22 #Golang
Go语言特点及基本数据类型使用详解
详解Golang如何优雅的终止一个服务
Mar 21 #Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 #Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 #Golang
You might like
最简单的PHP程序--记数器
2006/10/09 PHP
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
jQuery 位置插件
2008/12/25 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
小程序自定义日历效果
2018/12/29 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
北京天坛导游词
2015/02/12 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android