来源:自学PHP网 时间:2019-08-07 16:47 作者:小飞侠 阅读:次
[导读] 详解Golang中下划线的使用方法...
在 Golang 里, 用在 import 在导包的时候,常见这个用法,尤其是项目中使用到 mysql 或者使用 pprof 做性能分析时,比如 import _ "net/http/pprof" import _ "github.com/go-sql-driver/mysql" 这种用法,会调用包中的 用在返回值 该用法也是一个常见用法。Golang 中的函数返回值一般是多个,err 通常在返回值最后一个值。但是,有时候函数返回值中的某个值我们不关心,如何接收了这个值但不使用,代码编译会报错,因此需要将其忽略掉。比如 for _, val := range Slice {} _, err := func() 用在变量 我们都知道 Go 语言的接口是非侵入式的,不像 java 和 c++ 那么重,一个结构体只要实现了接口定义的所有函数,我们就说这个接口实现了该接口。有个专门的名字表示这种行为,duck typing,即当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。 type I interface { Sing() } type T struct { } func (t T) Sing() { } type T2 struct { } func (t *T2) Sing() { } // 编译通过 var _ I = T{} // 编译通过 var _ I = &T{} // 编译失败 var _ I = T2{} // 编译通过 var _ I = &T2{} 在这里下划线用来判断结构体是否实现了接口,如果没有实现,在编译的时候就能暴露出问题,如果没有这个判断,后代码中使用结构体没有实现的接口方法,在编译器是不会报错的。 可以看到上面四个判断只有第三个编译时失败的,报错如下:
这是为什么呢?仔细看上面代码发现, 我们都知道,Go 语言中是按值传递的。 那对于 而对于 当然,这些都是我的个人理解,如果不对的话,欢迎斧正。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学php网。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com