Go 基本数据类型转换及细节讨论

基本数据类型转换


  • 基本介绍
    • Golang java / c 不同,Go 不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数据类型不能自动转换
  • 基本语法
  • 表达式  T(v)  将值 v 转换为类型 T
    • T就是数据类型,比如 int32int64float32 等等
    • v就是需要转换的变量
  • 案例演示1:
var n1 int32 = 100
//希望将 n1转换成 float
var n2 float32 = n1
  • 结果报错:


  • 案例演示2:
var n1 int32 = 100
var n2 float32 = float32(n1)
var n3 int8 = int8(n1)
fmt.Printf("n1 = %v ,n2 = %v ,n3 = %v", n1, n2, n3)
  • 结果:


基本数据类型转换细节讨论

  • Go 中,数据类型的转换可以是从 表示范围小 -> 表示范围大,也可以 范围大 -> 范围小
  • 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!

  • 把n1的值,也就是100转换成float32,但是n1仍然是int32类型。
var n1 int32 = 100
var n2 float32 = float32(n1)
fmt.Printf("n1 type is %T\n", n1)
fmt.Printf("n2 type is %T", n2)
  • 输出结果:


  • 在转换中,比如将 int64 转成 int8 -128---127】 ,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围.
//转换的结果是按溢出处理
var n1 int64 = 999999
var n2 int8 = int8(n1)
fmt.Println("n2 = ", n2)
  • 输出结果:


  • 案例练习1:

  • 改正:


  • 案例练习2:

  • n3 = int(n1) + 128,128本身超出 int8 范围,所以无法编译通过。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值