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 interface{}==nil 的几种坑及原理分析
Apr 24 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
goland设置颜色和字体的操作
May 05 Golang
golang elasticsearch Client的使用详解
May 05 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
victoriaMetrics库布隆过滤器初始化及使用详解
Apr 05 Golang
golang的文件创建及读写操作
Apr 14 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang map映射的用法
Apr 22 Golang
Go语言入门exec的基本使用
May 20 Golang
GO中sync包自由控制并发示例详解
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数组的概述及分类与声明代码演示
2013/02/26 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
python实现图片上添加图片
2019/11/26 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
python自动化发送邮件实例讲解
2021/01/04 Python
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
学习全国两会精神心得体会范文
2014/03/17 职场文书
教师节宣传方案
2014/05/23 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android