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 相关文章推荐
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
解决Golang中goroutine执行速度的问题
May 02 Golang
golang日志包logger的用法详解
May 05 Golang
使用golang编写一个并发工作队列
May 08 Golang
Golang生成Excel文档的方法步骤
Jun 09 Golang
试了下Golang实现try catch的方法
Jul 01 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
深入理解go slice结构
Sep 15 Golang
golang中的struct操作
Nov 11 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
Go结合Gin导出Mysql数据到Excel表格
Aug 05 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做推送服务端实现ios消息推送
2013/07/01 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
详解JS函数stack size计算方法
2018/06/18 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python实现二分查找与bisect模块详解
2017/01/13 Python
Python中实现switch功能实例解析
2018/01/11 Python
python获取url的返回信息方法
2018/12/17 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
优秀员工个人的自我评价
2013/11/29 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
服装店员工管理制度
2015/08/07 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python