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 函数(如 ParseInt、ParseUint、ParseBool),如果输入字符串的格式不正确或超出范围,都会返回该错误。
3. 总结
strconv 包提供了一组强大而灵活的函数,用于在 Go 中进行字符串和基本数据类型之间的转换。通过掌握这些函数,你可以高效地处理数据解析、格式化和转换,满足各种应用需求。理解和使用这些工具将帮助你在处理数据时更为得心应手。