Go语言学习日志之"_"下划线的作用
作为idea的忠实粉丝,我在开始学习Go的时候就果断选用了Goland作为主力工具。前几天在我手动导包的时候发现,导入某些包时Goland会提示我在包名前加上下划线,今天又在学习Go的时候遇到了用"_"来接收返回值的情况,于是果断搜索相关资料,先贴上相关资料链接以示尊重:Golang中下划线的使用(来自Go语言中文网的大佬写的资料)
言归正传,下面列出下划线在Go中的几个作用:
- import时使用下划线:
import _ "net/http/pprof"
此时会调用对应包的init()
函数进行初始化,不会使用包中的其他功能。 - 用下划线来接收返回值:众所周知Go语言的函数返回值中的最后一项都是err,即错误信息。某些时候我们只关注这个函数执行是否成功,例如我们有时会这样使用
_,err := http.Head(url)
,对于某些情况我们只关心请求是否成功,而这个函数的其他返回参数我们并不想看,但又不能不接收返回值(废话不然会报错),此时就可以用下划线来接收所有其它所有的返回值。 - 用在变量上:首先先了解一个概念——侵入式接口&非侵入式接口。侵入式接口是指实现类需要明确指出自己实现了某个接口;非侵入式接口是指一个类只需要实现接口的所有函数,那么这个类实现了该接口。Go语言中采用的就是后者非侵入式接口,下面来看一下大佬举的例子: