-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46553
- shell命令
-
- 文章:(42)篇
- 阅读:154227
- Git教程
-
- 文章:(36)篇
- 阅读:234843
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131787
-
go语言中类型转换2019-04-27 19:08 阅读(14499) 评论(0)
go语言中,不允许隐式类型转换,要把一个类型转换到另一个类型,必须进行显示地操作。在上一篇文章“go中类型转换包strconv的使用”探讨了通过strconv包里面提供的函数,来实现字符串、整形、bool之间的相互转化,那么针对其他类型,如何转化呢?
在go语言中,我们可以通过“强制类型转换”和“类型断言”,来实现转换。
1、强制类型转换的语法
var t1 T1 var t2 T2 = T2(t1) //将t1类型的变量,强制转为t2类型。
譬如,将int类型转为int64类型,如下:
var p int = 3 var p2 int64 = int64(p)
备注:类型转换,是用户在相互兼容的、不同的类型之间进行相互转换,如果类型不兼容,转换就会报错“cannot convert”
2、类型断言的语法
类型断言,是判断一个接口类型的变量,能否转为另外一种类型(可为接口,或非接口)。
var t1 T1 //T1必须是接口类型 //语法一 安全类型断言 判断T2,是否实现了T1接口,其中isOk为bool类型,代表是否可以转换 t1, isOk := t1.(T2) //语法二 非安全类型断言 t1:= t1.(T2)
案例如下:
type myInterface interface { show() } type myInt int func (m myInt) show() { fmt.Println(m) } var numObj myInterface = myInt(3) p, isOk := numObj.(myInt) if isOk { fmt.Println("可以转换") } else { fmt.Println("不可以转换") } fmt.Println(p)