这篇文章将讲述整型,浮点型,字符串类型之间的相互转换。

数值类型转换

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)和 Itoaint 转字符串)。

i, err := strconv.Atoi("-42")
s := strconv.Itoa(-42)

因为 string 转其它类型可能会失败,所以 Atoi 函数都有第二个返回值表示是否转换成功。

除了上面提到的函数,ParseBoolParseFloatParseIntParseUint 这些函数也可以转换字符串为数值类型。

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)

FormatBoolFormatFloatFormatIntFormatUint 函数将数值类型转换为字符串:

s := strconv.FormatBool(true)
s := strconv.FormatFloat(3.1415, 'E', -1, 64)
s := strconv.FormatInt(-42, 16)
s := strconv.FormatUint(42, 16)

AppendBoolAppendFloatAppendIntAppendUint 函数可以将格式化/转换后的值附加到目标切片中:

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

标签: GO, Golang, 类型转换, 转换

添加新评论