Go语言基本语法(部分)| 青训营

42 阅读2分钟

转换不同的数据类型

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语言的指针类型变量拥有指针的高效访问,但又不会发生指针偏移,从而避免非法修改关键性数据问题。同时,垃圾回收也比较容易对不会发生偏移的指针进行检索和回收。

切片比原始指针具有强大的特性,更为安全。切片发生越界时,运行时会报出宕机,并打出堆栈,而原始指针会崩溃。