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 实现两个结构体复制字段
Apr 28 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
Go语言并发编程 sync.Once
Oct 16 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
golang的文件创建及读写操作
Apr 14 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang 实现WebSockets
Apr 24 Golang
GoFrame框架数据校验之校验结果Error接口对象
Jun 21 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
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Python3基础之基本运算符概述
2014/08/13 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
Python os库常用操作代码汇总
2020/11/03 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
质量承诺书格式
2014/05/20 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
家庭教育的心得体会
2014/09/01 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
党支部承诺书
2015/01/20 职场文书
个人德育工作总结
2015/03/05 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang