Go 语言数据类型转换

优质
小牛编辑
152浏览
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)
  }