您的位置:

深入了解Go语言中的strconv包

一、简介

Go语言中的strconv包提供了基本数据类型之间相互转换的函数。

其中,strconv.Itoa和strconv.Atoi用于将字符串和整型互相转换,strconv.ParseFloat、strconv.ParseInt和strconv.ParseUint则可以将字符串转换为浮点数、有符号整型和无符号整型。

二、strconv.Itoa和strconv.Atoi函数

strconv.Itoa函数将整型转换为字符串,示例代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    i := 666
    s := strconv.Itoa(i)
    fmt.Printf("i 的类型是 %T,值是 %v\n", s, s)
}

运行结果如下:

i 的类型是 string,值是 666

注:Itoa是格式化输出Println的逆操作,如果你要将数据写入到字符串里,可以使用fmt.Sprintf。但是性能可能会略逊于strconv.Itoa。

而strconv.Atoi函数将字符串转换为整型,示例代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    s := "666"
    if i, err := strconv.Atoi(s); err == nil {
        fmt.Printf("s 的类型是 %T,值是 %v\n", i, i)
    } else {
        fmt.Println(err)
    }
}

运行结果如下:

s 的类型是 int,值是 666

三、strconv.ParseFloat、strconv.ParseInt和strconv.ParseUint函数

这三个函数用于将字符串转换为浮点数、有符号整型和无符号整型。示例代码如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    f, err := strconv.ParseFloat("3.1415", 64)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("f 的类型是 %T,值是 %v\n", f, f)
    }

    i, err := strconv.ParseInt("-42", 10, 64)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("i 的类型是 %T,值是 %v\n", i, i)
    }

    u, err := strconv.ParseUint("42", 10, 64)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("u 的类型是 %T,值是 %v\n", u, u)
    }
}

运行结果如下:

f 的类型是 float64,值是 3.1415
i 的类型是 int64,值是 -42
u 的类型是 uint64,值是 42

四、结语

在日常开发中,经常需要进行不同类型之间的转换,因此了解strconv包提供的函数将会非常有用。

在使用这些函数的时候,需要根据具体情况选择转换函数,并注意异常处理。