Go 语言数据类型转换
优质
小牛编辑
156浏览
2023-12-01
C 语言中数据可以隐式转换或显示转换,但是 Go 语言中数据 只能显示转换
C 语言隐式转换
#include <stdio.h> int main(){ // 隐式转换:自动将实型10.6转换为整型后保存 int a = 10.6; // 自动类型提升: 运算时会自动将小类型转换为大类型后运算 double b = 1.0 / 2; // 等价于1.0 / 2.0 }
C 语言显示转换,强制转换
#include <stdio.h> int main(){ // 显示转换:强制将实型10.6转换为整型后保存 int a = (int)10.5; }
Go 语言数值类型之间转换
- 格式:
数据类型(需要转换的数据)
- 注意点:和C语言一样数据可以从大类型转换为小类型,也可以从小类型转换为大类型,但是大类型转换为小类型可能会丢失精度
package main import "fmt" func main() { var num0 int = 10 var num1 int8 = 20 var num2 int16 //num2 = num0 // 编译报错, 不同长度的int之间也需要显示转换 //num2 = num1 // 编译报错, 不同长度的int之间也需要显示转换 num2 = int16(num0) num2 = int16(num1) fmt.Println(num2) var num3 float32 = 3.14 var num4 float64 //num4 = num3 // 编译报错, 不同长度的float之间也需要显示转换 num4 = float64(num3) fmt.Println(num4) var num5 byte = 11 var num6 uint8 // 这里不是隐式转换, 不报错的原因是byte的本质就是uint8 num6 = num5 fmt.Println(num6) var num7 rune = 11 var num8 int32 num8 = num7 // 这里不是隐式转换, 不报错的原因是byte的本质就是int32 fmt.Println(num8) }