基本数据类型的转换

基本数据类型的转换

golang和java/c不同,go在不同类型变量之间赋值时需要显示转换(强制转换),也就是说golang中数据类型不能自动转换

基本语法

表达式T(v) 将值v转换为类型T

T:就是数据类型,比如int32,int64等等

v:就是需要转换的变量

package main
import "fmt"
//演示golang中基本数据类型转换
func main(){
	var i int32 = 100 //希望将i转为float
	var n1 float32 = float32(i)
	var n2 int8 = int8(i)
	fmt.Printf("i=%v n1=%v n2=%v",i,n1,n2)
}

输出

i=100 n1=100 n2=100

细节说明

  1. go中,数据类型的转换可以是从表示范围小-->表示范围大,也可以范围大-->范围小
  2. (*)被转换的是 变量存储的数据(即值),变量本身的数据类型没有变化
  3. 在转换中,比如将int64转成int8,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样
package main
import "fmt"
func main(){
	//在转换中,比如将int64转成int8,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样
	var num1 int64 = 999999
	var num2 int8 = int8(num1) //
	fmt.Println("num2=",num2)
}

输出

num2= 63

练习题

判断是否能够通过编译

func main(){
    var n1 int32 = 12
    var n2 int64
    var n3 int8
    
    n2 = n1 + 20 //×
    n3 = n1 + 20 //×
}

func main(){
    var n1 int32 = 12
    var n2 int64
    var n3 int8
    
    n2 = int64(n1) + 20 
    n3 = int8(n1) + 20 
}
func(){
    var n1 int32 = 12
    var n3 int8
    var n4 int8
    n4 = int8(n1) + 127 //编译可以通过,但结果溢出
    n3 = int8(n1) + 128 //编译通不过
    fmt.Println(n3)
}

posted on 2021-10-18 14:45  甜夜  阅读(98)  评论(0)    收藏  举报

导航