zoukankan      html  css  js  c++  java
  • 8.30Go之数据类型转换

    8.30Go之数据类型转换

    Go语言当中的类型转换

    特点:

    Go语言不存在隐式类型转换,所有的类型转换都必须显式的声明:

    valueOfTypeB = typeB(valueOfTypeA)
    /*
    类型 B 的值 = 类型 B(类型 A 的值)
    */

    Go语言当中数据类型转换的一些特性

    • 只能在定义正确的情况下转换成功。例如:从一个取值范围较小的类型转换到一个取值范围较大的类型

      • 从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。--->不会失败,会丢失精度

    • 有相同底层类型的变量之间可以进行相互转换(如将 int16 类型转换成 int32 类型),不同底层类型的变量相互转换时会引发编译错误(如将 bool 类型转换为 int 类型)

    底层类型相同指的是值类型,值类型可以向引用类型转型。例如:将一串int转成string类型

    示例:

    package main

    import (
    "fmt"
    "math"
    )

    func main() {
    /*打印数据类型的最大最小值*/
    fmt.Println("int8 range is:", math.MinInt8, math.MaxInt8)

    /*声明一个int32整数型*/
    var num int32 = 1047483647
    //格式化输出变量的16进制形式和10进制形式
    fmt.Printf("int32: 0x%x %d ", num, num)

    /*数值转型为int16*/
    num2 := int16(num)
    fmt.Printf("int16: 0x%x %d ", num2, num2)
    /*
    上下两次打印的结果上看发生了精度丢失
    */

    /*声明一个float变量*/
    var num3 float32 = math.Pi //圆周率
    fmt.Println(int(num3)) //精度丢失,小数点后的数全部丢失
       /*
       浮点数在转换为整型时,会将小数部分去掉,只保留整数部分。
       */
    }

    fmt.Printf%x动词将数值以十六进制格式输出,输出 num 在转换前的 32 位的值。

     

    It's a lonely road!!!
  • 相关阅读:
    数据恢复
    InnoDB LRU优化
    STM32 M0之SPI
    C# 添加日志文件
    VCI_CAN二次开发摘机
    [一点感触]ADF4350 ADF4111混频记
    Linux札记
    C# String与Byte数组的转换
    STM32 CAN
    stm32 F40x CCM数据区的使用
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15207409.html
Copyright © 2011-2022 走看看