golang中的五种类型转换

2023-01-04  本文已影响0人  深圳都这么冷

1. 无类型常量(隐式)

有些常量不从属某一具体类型,共六种:

编号 无类型常量 默认类型
1 无类型布尔 bool
2 无类型整数 int
3 无类型符文 rune
4 无类型浮点数 float64
5 无类型复数 complex128
6 无类型字符串 string

变量声明没有指定具体类型时,无类型常量会隐式转换成该变量的默认类型

i := 0  // int(0)
r := '\000' // rune('\000')
f := 0.0  // float64(0.0)
c := 0i  // complex128(0i)
var i8 int8 = 1  // int8(1)  无类型到具体类型的隐式转换,类型必须兼容

2. 显式类型转换

显式类型转换,基础类型必须兼容

i := int(1.2)

3. 类型断言

obj.(T),一般从接口类型转换为具体类型

x := obj.(T)  // T可以是任何具体类型或者接口类型,如果转换不成功会panic
x, ok := obj.(T) // x只有ok为true时才有意义

4. 具体类型赋值给接口类型(隐式)

type I interface{}
var x I = 0

5. 方法定义的接收器

上一篇下一篇

猜你喜欢

热点阅读