• [golang]语法基础之数据类型转换


    在一些编程语言里面,存在着隐式类型转换,例如JavaScript。

    var a = 10 
    var b = "a"
    console.log(a + b) // 10a
    

    上面的js代码在执行的时候发生了隐式类型转换,将number类型的变量a自动转换为了字符串,和字符串类型的b执行相加后,发生了字符串的拼接。

    但是这种隐式的类型转换,在go语言当中是不存在的。

    go必要的情况下,允许将一个类型的值转换为另外一个类型的值。但是所有的类型转换都必须显示的声明出来。

    示例:

    valTypeB = TypeB(valTypeA)
    

    类型B的值 = 类型B(类型A的值)

    例如下面的例子:

    // 定义一个变量
    var s1 string = "hello,world"
    var a = []byte(s1) // 将字符串转换为数组
    var n1 float64 = 1.0
    var b int = int(n1) // 将float64转换为整型
    

    类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将 int16 转换为 int32)。当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。

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

    // int 32 最大值:2147483647
    var n1 int64 = 2147483648
    var n2 int32 = int32(n1)
    fmt.Println(n2) // -2147483648
    
    // 底层不同的数据进行转换
    var b1 bool = true
    var n1 int = int(b1)
    fmt.Println(n1) // cannot convert b1 (type bool) to type int
    
    
  • 相关阅读:
    作业6
    作业8
    作业7
    作业5
    作业4
    作业3
    作业2
    作业1
    浏览器跨域的细节
    解析node-cors模块
  • 原文地址:https://www.cnblogs.com/liujunhang/p/12534420.html
Copyright © 2020-2023  润新知