go语言中的类型断言与类型转换

在读他人源码的时候碰到一个自己没读懂的写法:

if r,ok:=w.(io.Reader);ok{
r.Read(&buffer)
}

其中,w 原来是个interface{} 对象指向一个自定义的输入输出插件,实现了 io.Reader 和io.Writer
后来翻了翻,这个写法是go 的type assertion

最典型的type assertion


type Element interface{}
func main(){
  var e Element=100
  switch value:=e.(type){
  case int:
    fmt.Println("int",value)
   case string:
    fmt.Println("string",value)
  default:
    fmt.Println("unknown")
                }
            }

而强制类型转换是这么写的

var i=0
s:=string( i)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容