转换不同的数据类型
Go语言使用类型前置加括号的方式进行类型转换,一般格式如下:
T(表达式)
T代表要转换的类型。表达式包括变量、复杂算子和函数返回值等。 类型转换时,需要考虑两种类型的关系和范围,是否发生数值截断
func main() {
fmt.Println("8",math.MaxInt8,math.MinInt8)
fmt.Println("16",math.MaxInt16,math.MinInt16)
fmt.Println("32",math.MaxInt32,math.MinInt32)
fmt.Println("64",math.MaxInt64,math.MinInt64)
var a int32 =1047483647
fmt.Printf("int32:0x%x %d\n",a,a)
b :=int16(a)
fmt.Printf("int16:0x%x %d\n",b,b)
var c float32 = math.Pi
fmt.Println(int(c))
}
输出:
16 32767 -32768
32 2147483647 -2147483648
64 9223372036854775807 -9223372036854775808
int32: 0x3e6f54ff 1047483647
int16: 0x54ff 21759
3
指针
指针概念在Go语言中被拆分为两个核心概念:
1、类型指针,允许对这个指针类型的数据进行修改。传递数据使用指针,而无须拷贝数据。类型指针不能进行便宜和运算。
2、切片,由指向起始元素的原始指针、元素数量和容量组成
受益于这样的约束和拆分,Go语言的指针类型变量拥有指针的高效访问,但又不会发生指针偏移,从而避免非法修改关键性数据问题。同时,垃圾回收也比较容易对不会发生偏移的指针进行检索和回收。
切片比原始指针具有强大的特性,更为安全。切片发生越界时,运行时会报出宕机,并打出堆栈,而原始指针会崩溃。