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项目中使用init()
Apr 12 Golang
Go语言使用select{}阻塞main函数介绍
Apr 25 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
Go语言中break label与goto label的区别
Apr 28 Golang
Golang 空map和未初始化map的注意事项说明
Apr 29 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
golang import自定义包方式
Apr 29 Golang
go语言中fallthrough的用法说明
May 06 Golang
golang switch语句的灵活写法介绍
May 06 Golang
Golang的继承模拟实例
Jun 30 Golang
使用GO语言实现Mysql数据库CURD的简单示例
Aug 07 Golang
Golang ort 中的sortInts 方法
Apr 24 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
jquery实现更改表格行顺序示例
2014/04/30 Javascript
对比分析json及XML
2014/11/28 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python CSV模块使用实例
2015/04/09 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python Selenium参数配置方法解析
2020/01/19 Python
python sorted函数原理解析及练习
2020/02/10 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
小学教师培训感言
2014/02/11 职场文书
计生专干事迹
2014/05/28 职场文书
学习型班组申报材料
2014/05/31 职场文书
给学校的建议书400字
2015/09/14 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android