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语言map与string的相互转换的实现
Apr 07 Golang
go原生库的中bytes.Buffer用法
Apr 25 Golang
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
goland 清除所有的默认设置操作
Apr 28 Golang
golang 如何用反射reflect操作结构体
Apr 28 Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 Golang
解决Go gorm踩过的坑
Apr 30 Golang
Golang中interface{}转为数组的操作
Apr 30 Golang
Golang之sync.Pool使用详解
May 06 Golang
Go 语言结构实例分析
Jul 04 Golang
Golang MatrixOne使用介绍和汇编语法
Apr 19 Golang
Golang bufio详细讲解
Apr 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
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
vue 项目接口管理的实现
2019/01/17 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python简单判断序列是否为空的方法
2015/06/30 Python
Python中文件的读取和写入操作
2018/04/27 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
python中有函数重载吗
2020/05/28 Python
PyTorch-GPU加速实例
2020/06/23 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
学习十八大报告感言
2014/02/04 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
公司财务管理制度
2015/08/04 职场文书
英语教学课后反思
2016/02/15 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
导游词之河北邯郸
2019/09/12 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python