一、数字类型的转换
总体上类型转换的用法非常简单,和 Python 语言中类似, 只需要使用与新类型(转换后的类型)同名的函数包裹需要被转换的变量或者数据即可。
// 整型转为浮点型
age := 41
marsAge := float64(age)
注意:
除了 整型和浮点型需要进行转换外,还有有符号和无符号整数,以及各种不同长度的类型之间都需要进行转换。
从取值范围小的类型转换为取值范围大的类型总是比较安全的,其他的转换存在风险。
例如, uint32 变量的最大值可以是 40 亿,但 int32 变量的最大值只能是 20 亿。
在将浮点数转换为整数的时候,小数点后面的数字将会被截断,而不会进行四舍五入。
earthDays := 365.892
fmt.Println(int(earthDays)) // 365
二、 字符串的转换
1 将代码点转换为字符
var pi rune = 960
var alpha rune = 940
var bang byte = 33
fmt.Print(string(pi),string(alpha),string(bang)) // πά!
2 将一串数字转换为 string
package main
import (
"fmt"
"strconv"
)
func main(){
count := 10
// 方法一: stronv 包中的 Itoa 函数
str := "计数为 " + strconv.Itoa(count)
fmt.Println(str) // "计数为 10"
// 方法二:fmt.Sprintf 函数,它会返回字符串值
str1 := fmt.Sprintf("计数为 %v", count)
fmt.Println(str1) // "计数为 10"
}
3 将字符串转换为数值
num, err := strconv.Atoi("10")
fmt.Println(num, err) // 10 <nil>
三、布尔类型转换
将布尔类型转换为字符串
ready := false
readyText := fmt.Sprintf("%v", ready)
fmt.Println("Are you ready?", readyText)
在有些语言中,通常会使用数字 0
或者空字符串 ""
来表示 false
,
用数字 1
或者非空字符串表示 true
。
但在 Go 语言中并没有与之相等的数字值或者字符串值,因此如下代码是错误的:
var f = false
fText := string(f)
var fn = bool(1)