跳转至

Go语言strconv包

Go语言的 strconv 包提供了将基本数据类型转换为字符串和将字符串转换为基本数据类型的功能。这个包是处理数据转换的核心组件,尤其是在需要与外部数据交换时,例如解析用户输入或处理配置文件。以下是对 strconv 包的详细介绍,包括主要类型、方法和示例。

1. 主要函数

1.1 Atoi 函数

func Atoi(s string) (int, error)

Atoi 函数将字符串 s 转换为 int 类型。如果转换失败,则返回错误。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    numStr := "123"
    num, err := strconv.Atoi(numStr)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Number:", num)
    }
}

1.2 Itoa 函数

func Itoa(i int) string

Itoa 函数将 int 类型的 i 转换为字符串。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    num := 123
    numStr := strconv.Itoa(num)
    fmt.Println("String:", numStr)
}

1.3 ParseBool 函数

func ParseBool(str string) (bool, error)

ParseBool 函数将字符串 str 转换为布尔值。支持的字符串包括 "1""t""true""0""f""false",否则返回错误。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    boolStr := "true"
    value, err := strconv.ParseBool(boolStr)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Boolean:", value)
    }
}

1.4 ParseInt 函数

func ParseInt(s string, base int, bitSize int) (int64, error)

ParseInt 函数将字符串 s 转换为 int64 类型。base 指定了进制(0 表示自动检测),bitSize 指定了整数大小(0 表示自动选择)。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    intStr := "1010"
    value, err := strconv.ParseInt(intStr, 2, 64) // 以二进制解析
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Integer:", value)
    }
}

1.5 ParseUint 函数

func ParseUint(s string, base int, bitSize int) (uint64, error)

ParseUint 函数将字符串 s 转换为 uint64 类型。base 指定了进制(0 表示自动检测),bitSize 指定了整数大小(0 表示自动选择)。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    uintStr := "1234"
    value, err := strconv.ParseUint(uintStr, 10, 64) // 以十进制解析
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Unsigned Integer:", value)
    }
}

1.6 FormatBool 函数

func FormatBool(b bool) string

FormatBool 函数将布尔值 b 转换为字符串。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    value := true
    boolStr := strconv.FormatBool(value)
    fmt.Println("String:", boolStr)
}

1.7 FormatInt 函数

func FormatInt(i int64, base int) string

FormatInt 函数将 int64 类型的 i 转换为字符串。base 指定了进制(2、8、10、16)。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    value := int64(255)
    hexStr := strconv.FormatInt(value, 16) // 转换为十六进制字符串
    fmt.Println("Hexadecimal:", hexStr)
}

1.8 FormatUint 函数

func FormatUint(i uint64, base int) string

FormatUint 函数将 uint64 类型的 i 转换为字符串。base 指定了进制(2、8、10、16)。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    value := uint64(1234)
    octalStr := strconv.FormatUint(value, 8) // 转换为八进制字符串
    fmt.Println("Octal:", octalStr)
}

1.9 Quote 函数

func Quote(s string) string

Quote 函数将字符串 s 转换为 JSON 字符串字面量形式。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    str := "Hello, World!"
    quotedStr := strconv.Quote(str)
    fmt.Println("Quoted String:", quotedStr)
}

1.10 QuoteToASCII 函数

func QuoteToASCII(s string) string

QuoteToASCII 函数将字符串 s 转换为 ASCII 编码的 JSON 字符串字面量形式,非 ASCII 字符将被转义。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    str := "Hello, 世界!"
    quotedStr := strconv.QuoteToASCII(str)
    fmt.Println("Quoted ASCII String:", quotedStr)
}

1.11 Unquote 函数

func Unquote(s string) (string, error)

Unquote 函数将被 Quote 函数引用的字符串转换回普通字符串。

示例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    quotedStr := `"Hello, World!"`
    unquotedStr, err := strconv.Unquote(quotedStr)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Unquoted String:", unquotedStr)
    }
}

2. 错误处理

strconv 包中,许多函数返回的错误都是 strconv.ErrSyntax,它表示在转换过程中遇到了语法错误。对于 Parse 函数(如 ParseIntParseUintParseBool),如果输入字符串的格式不正确或超出范围,都会返回该错误。

3. 总结

strconv 包提供了一组强大而灵活的函数,用于在 Go 中进行字符串和基本数据类型之间的转换。通过掌握这些函数,你可以高效地处理数据解析、格式化和转换,满足各种应用需求。理解和使用这些工具将帮助你在处理数据时更为得心应手。

评论