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语言-在mac下brew升级golang
Apr 25 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Golang: 内建容器的用法
May 05 Golang
golang switch语句的灵活写法介绍
May 06 Golang
golang用type-switch判断interface的实际存储类型
Apr 14 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
Golang jwt身份认证
Apr 20 Golang
Golang 实现WebSockets
Apr 24 Golang
Go语言怎么使用变长参数函数
Jul 15 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.ini中文版(1)
2006/10/09 PHP
PHP4在Windows2000下的安装
2006/10/09 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
Python编写电话薄实现增删改查功能
2016/05/07 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
工程造价与管理专业应届生求职信
2013/11/23 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
中学生检讨书范文
2014/11/03 职场文书
先进教师个人总结
2015/02/11 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js