Go 语言类型转换
这篇文章将讲述整型,浮点型,字符串类型之间的相互转换。
数值类型转换
Go 有很多种数字类型,它们主要可分为两种类型:整型和浮点型。Go 语言数值类型转换基本格式如下:
valueOfTypeB = typeB(valueOfTypeA)
其中 typeB
为目标类型,valueOfTypeA
为原类型 A 的值。
以下示例中将 int8
类型转化为 int32
类型,并将结果打印输出:
var index int8 = 15
var bigIndex int32
bigIndex = int32(index)
fmt.Println(bigIndex) // 打印出来的值为 15
以下示例中将整型转化为浮点型,并计算结果,将结果赋值给浮点型变量:
var sum int = 17
var count int = 5
var mean float32
mean = float32(sum)/float32(count)
fmt.Printf("mean 的值为: %f\n",mean) // mean 的值为: 3.400000
数值类型与字符串类型转换
字符串是一个或多个字符(字母、数字或符号)的序列,所以在 Go 语言中,字符串的转换需要借助 strconv
。
strconv
包提供了简单数据类型之间的类型转换功能。可以将简单类型转换为字符串,也可以将字符串转换为其它简单类型。
strconv
包最常见的数字转换方法是 Atoi
(字符串转 int
)和 Itoa
(int
转字符串)。
i, err := strconv.Atoi("-42")
s := strconv.Itoa(-42)
因为 string
转其它类型可能会失败,所以 Atoi
函数都有第二个返回值表示是否转换成功。
除了上面提到的函数,ParseBool
, ParseFloat
, ParseInt
和 ParseUint
这些函数也可以转换字符串为数值类型。
b, err := strconv.ParseBool("true")
f, err := strconv.ParseFloat("3.1415", 64)
i, err := strconv.ParseInt("-42", 10, 64)
u, err := strconv.ParseUint("42", 10, 64)
FormatBool
、FormatFloat
、FormatInt
和 FormatUint
函数将数值类型转换为字符串:
s := strconv.FormatBool(true)
s := strconv.FormatFloat(3.1415, 'E', -1, 64)
s := strconv.FormatInt(-42, 16)
s := strconv.FormatUint(42, 16)
AppendBool
、AppendFloat
、AppendInt
和 AppendUint
函数可以将格式化/转换后的值附加到目标切片中:
b := []byte("bool:")
b = strconv.AppendBool(b, true)
fmt.Println(string(b))
字符串类型和字节类型转换
Go 中的字符串存储为字节片。在Go中,可以使用 []byte()
和 string()
在字节片和字符串之间进行转换:
a := "my string"
b := []byte(a)
c := string(b)
fmt.Println(a) // my string
fmt.Println(b) // [109 121 32 115 116 114 105 110 103]
fmt.Println(c) // my string