大家好,我是小西
有几天没有更新Go 相关的文章了,这篇算是对类型复习
Go语言是一门强类型语言,任何的变量都有确定的类型,所以搞清楚变量的类型,非常重要
类型断言(Type assertions)
先说说什么是类型断言,这是Go 中判断变量是不是特定类型的语法
有两种写法
t := i.(T)把 i 类型断言为T
t, ok := i.(T)把 i 类型断言为类型 T
第一个写法断言成功t会是 i 内部的值,如果断言失败会触发一个 panic 错误,
第二个写法如果断言失败,不会触发 panic , ok 会是 false
注意使用类型断言 i 只能是 interface 类型,而不能是原始类型
类型选择(Type switches)
使用这个语法可以一次判断一个值是否是多个类型中的一种,语法如下
switch v := i.(type) {case T:// here v has type Tcase S:// here v has type Sdefault:// no match; here v has the same type as i}
注意这里的 i.(type), I 是你传入的值, (type) 是固定的写法
总结
本文主要带大家回顾了类型判断的两种语法,类型断言和类型switch
顺便复习了 go 中的特殊类型 interface {},注意类型语法,只能配合 interface类型使用。还有,之前讲过的 WaitGroup 的用法,你可以尝试去掉第一个例子中的的 waitGroup 相关的语句,看看会发生什么,相信你会对 WaitGroup 有更深入的理解!
本文完,谢谢你的阅读,往期推荐在下面~~