首页 > 编程笔记 > Go语言笔记 阅读:14

Go语言数据类型转换(附带实例,新手必看)

在 Go语言中,可以把一个类型的值转换成另一个类型的值,这个转换过程称作类型转换。

在 Go语言类型转换中,没有隐式类型转换,所有的转换都必须显式声明。

Go语言类型转换的语法格式如下:
v1 := T(v) // 将变量 v 转换为类型 T,得到转换后的变量 v1
参数说明如下:
Go语言可以准确无误地把取值范围较小的类型转换为取值范围较大的类型,例如,int32 类型的值可以转换成 int64 类型的值。但把取值范围较大的类型转换为取值范围较小的类型时,会发生精度丢失的情况。

例如,定义值为 7.11 的 float32 类型变量 f 后,再把变量 f 的类型显式转换为 int32类 型,而后得到类型转换后的变量 i。代码如下:
package main

import (
    "fmt"
)

func main() {
    var f float32 = 7.11
    var i = int32(f)
    fmt.Println("f =", f, "\ni =", i)
}
运行结果如下:

f = 7.11
i = 7

因为 float32 类型比 int32 类型的取值范围大,所以把 float32 类型的值转换为 int32 类型的值后会丢失精度。

注意,上面的方法只适用于数值类型之间的转换,如果在字符串和数值类型之间进行转换,则需要使用 strconv.Itoa()、strconv.Atoi()、Parse 系列函数或 Format 系列函数:
字符串与数值类型之间的转换,代码如下:
package main

import (
    "fmt"
    "strconv"
)

func main() {
    var i int = 5
    var f float64 = 7.11
    var str1 string = "false"
    var str2 string = "100"
    // 分别将 int 和 float 类型转换为字符串
    fmt.Println("转换后的字符串值: " + strconv.Itoa(i) + " " + strconv.FormatFloat(f, 'g', 5, 32))
    num, err := strconv.Atoi(str2) // 将字符串转换为 int 值,err 为转换失败时返回的错误标识
    fmt.Println(num + 50)         // 将转换后的 int 值跟其他 int 值相加
    fmt.Println(err)             // 定义的变量必须使用,否则会出现错误提示
    fmt.Println(strconv.ParseBool(str1)) // 将字符串转换为 bool
}
运行结果如下:

转换后的字符串值:5 7.11
150
<nil>
false <nil>

相关文章