package main
import "fmt"
//基本数据类型的默认值
func main() {
var n1 int //数据类型的默认值是0
var n2 float64 //数据类型的默认值是0
var n3 bool //数据类型的默认值是false
var n4 string //数据类型的默认值是“”空引号
fmt.Printf("n1=%d,n2=%f,n3=%t,n4=%s\n",n1,n2,n3,n4)
//n1=0,n2=0.000000,n3=false,n4=
fmt.Println("----------------------------------")
//基本数据类型转换
var i int = 100
fmt.Printf("数值=%d,转换类型前=%T\n",i,i)
var ni float32 = float32(i)
fmt.Printf("数值=%f,转换类型后=%T\n",ni,ni) //注意在类型转换之后,占位符也需要转换为对应类型的占位符
fmt.Println("------------------------")
var i1 int8 = 12
var i2 float64 = float64(i1) //被转换的是变量存储的数值,变量本身的数据类型并没有变化
fmt.Printf("i1=%d,i1=%T\n",i1,i1)
fmt.Printf("i2=%f,i2=%T\n" ,i2,i2)
fmt.Println("------------------------")
//在转换类型的过程中,需要考虑被转换的数值转换成新的类型范围是否能容纳该数值
//如果不能则按溢出处理,但是这个结果不是我们所预料的 int8[-127---127]
var sum int64 = 99999
var sum1 int8 = int8(sum)
fmt.Printf("sum1=%d\n",sum1)
fmt.Println("------------------------")
//课堂练习
//1.不同类型案例
//var m1 int32 = 12
//var m2 int64
//var m3 int8
//
//m2=m1+20 //不同类型不可相加
cannot use m1 + 20 (type int32) as type int64 in assignment
//m3=m1+20
cannot use m1 + 20 (type int32) as type int8 in assignment
//fmt.Printf("n2=%d,n3=%d",m2,m3)
//2.做出类型修改
var m1 int32 = 12
var m2 int64
var m3 int8
m2=int64(m1)+20 //讲int32转为int64赋值给m2
m3=int8(m1)+20 //讲int32转为int8赋值给m3
fmt.Printf("n2=%d,n3=%d",m2,m3)
//使用错误类型案例 int8[-127---127]
//var nm1 int32 = 12
//var nm2 int8
//var nm3 int8
//nm2 = int8(nm1) + 127 //int32转int8超出取值范围,按溢出处理
//nm3 = int8(nm1) + 128 //直接超出取值范围报错
//fmt.Println(nm2,nm3)
}
运行结果:
n1=0,n2=0.000000,n3=false,n4=
----------------------------------
数值=100,转换类型前=int
数值=100.000000,转换类型后=float32
------------------------
i1=12,i1=int8
i2=12.000000,i2=float64
------------------------
sum1=-97
------------------------
n2=32,n3=32