网站策划方案案例,免费开发软件app下载,有哪些好的模板网站,宁波公司网站制作前言
在日常编程中#xff0c;类型转换是经常需要用到的。因此本文将总结归纳一下Go语言中常见的一些类型转换。 Go语言中的类型转换可以有多种分类方式#xff1a; 比如按照是否需要声明#xff0c;可以分为#xff1a;隐式类型转换和显式类型转换。 可以再根据使用场景划…前言
在日常编程中类型转换是经常需要用到的。因此本文将总结归纳一下Go语言中常见的一些类型转换。 Go语言中的类型转换可以有多种分类方式 比如按照是否需要声明可以分为隐式类型转换和显式类型转换。 可以再根据使用场景划分为3种显式类型转换、隐式类型转换和断言。很多地方这里分出来4种多了一个强制类型转换但我认为显式类型转换和强制类型转换应该就是一回事。期待大佬解答一下这里他们的分类依据 再或按照转换方向比如从整数类型到浮点数类型的转换或者从浮点数类型到整数类型的转换… … 本文将学习归纳使用场景分类下的情况。
强制类型转换
就是直接强转可能会导致数据丢失或溢出。
newType : targetType(expression)其中newType是要转换的目标类型targetType是要转换为的类型expression是要转换的表达式或变量。
例如
x : 10
y : float64(x)float64(x)将整数x转换为浮点数类型并将结果赋值给变量y。
隐式类型转换
隐式类型转换主要出现在接口处eg
package mainimport fmttype Animal interface {Sound()
}type Dog struct {Breed string
}func (d Dog) Sound() {fmt.Println(Woof!)
}func demo2(a Animal) {a.Sound()
}func demo1(d1 interface{}) {// 隐式类型转换——结构体类型转为接口类型demo2(d1.(Animal))
}func main() {d1 : Dog{Breed: 滴滴滴}demo1(d1)
}
可以看到这其中
日常使用中也可能碰见比如 func main() {var x int 10var y float64 x // 隐式类型转换将整数类型转换为浮点数类型fmt.Println(y) // 输出10.0
}断言
简单来说相当于执行了一个判断逻辑如果是A类型则正确反之则强转为A类型若转换成功则返回不成功则报错。
通常使用以下语法进行断言
value, ok : BInterface.(A)其中someInterface 是一个接口类型的值A 是一个具体的类型。value 是转换后的值ok 是一个布尔值表示转换是否成功。如果转换成功value 将包含转换后的值ok 为 true如果转换失败value 将包含零值ok 为 false。
具体讲解见此文。
总结
个人认为日常使用中用的最多的是强制类型转换亦可通过函数诸如Atoi , Itoa等。 隐式类型转换主要发生在使用接口时尤其需要注意看得懂。 断言使用在一些附带有判断的场景。诸如一个kafka消息接收时候断言为[]byte类型。