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设置多个GOPATH的方式
May 05 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
GoLang中生成UUID唯一标识的实现
May 08 Golang
Go遍历struct,map,slice的实现
Jun 13 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
golang为什么要统一错误处理
Apr 03 Golang
golang操作redis的客户端包有多个比如redigo、go-redis
Apr 14 Golang
Go语言 详解net的tcp服务
Apr 14 Golang
Go获取两个时区的时间差
Apr 20 Golang
Go语言测试库testify使用学习
Jul 23 Golang
基于Python实现西西成语接龙小助手
Aug 05 Golang
go goth封装第三方认证库示例详解
Aug 14 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在线生成ico文件的代码
2007/10/09 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
js右键菜单效果代码
2007/07/21 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
Angular的$http与$location
2016/12/26 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
对Python3 序列解包详解
2019/02/16 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
安装python及pycharm的教程图解
2019/10/10 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
关于Python错误重试方法总结
2021/01/03 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
数字漫画:comiXology
2020/06/13 全球购物
大学生暑期实践感言
2014/02/26 职场文书
大学应届生的自我评价
2014/03/06 职场文书
超市创业计划书
2014/04/24 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
2014年秘书工作总结
2014/11/25 职场文书
运动会致辞稿
2015/07/29 职场文书
领导离职感言
2015/08/03 职场文书
python - asyncio异步编程
2021/04/06 Python
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP