Golang 中的 Strconv 包详解,看这篇就够了("深入解析 Golang Strconv 包:一站式完整指南")
原创
一、简介
在 Golang 中,`strconv` 包是一个非常重要的标准库,它提供了字符串与基本数据类型之间彼此转换的功能。无论是从字符串中提取数字,还是将数字转换成字符串,`strconv` 都能轻松实现。本文将详细介绍 `strconv` 包的各项功能,帮助你更好地懂得和使用这个包。
二、字符串转换成基本数据类型
`strconv` 包提供了多种将字符串转换成基本数据类型的方法,以下是一些常用的转换函数:
1. Atoi
将字符串转换成 int 类型。
func Atoi(s string) (i int, err error)
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
i, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换差错:", err)
} else {
fmt.Println("转换导致:", i)
}
}
2. ParseBool
将字符串转换成 bool 类型。
func ParseBool(s string) (bool, error)
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "true"
b, err := strconv.ParseBool(str)
if err != nil {
fmt.Println("转换差错:", err)
} else {
fmt.Println("转换导致:", b)
}
}
3. ParseFloat
将字符串转换成 float64 类型。
func ParseFloat(s string, bitSize int) (float64, error)
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123.456"
f, err := strconv.ParseFloat(str, 64)
if err != nil {
fmt.Println("转换差错:", err)
} else {
fmt.Println("转换导致:", f)
}
}
4. ParseInt
将字符串转换成 int 类型,拥护多种进制。
func ParseInt(s string, base int, bitSize int) (i int64, err error)
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
i, err := strconv.ParseInt(str, 10, 64)
if err != nil {
fmt.Println("转换差错:", err)
} else {
fmt.Println("转换导致:", i)
}
}
三、基本数据类型转换成字符串
`strconv` 包同样提供了多种将基本数据类型转换成字符串的方法,以下是一些常用的转换函数:
1. Itoa
将 int 类型转换成字符串。
func Itoa(i int) string
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
i := 123
str := strconv.Itoa(i)
fmt.Println("转换导致:", str)
}
2. FormatBool
将 bool 类型转换成字符串。
func FormatBool(b bool) string
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
b := true
str := strconv.FormatBool(b)
fmt.Println("转换导致:", str)
}
3. FormatFloat
将 float64 类型转换成字符串。
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
f := 123.456
str := strconv.FormatFloat(f, 'f', 6, 64)
fmt.Println("转换导致:", str)
}
4. FormatInt
将 int64 类型转换成字符串。
func FormatInt(i int64, base int) string
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
i := int64(123)
str := strconv.FormatInt(i, 10)
fmt.Println("转换导致:", str)
}
四、进制转换
`strconv` 包还提供了进制转换的功能,以下是一些常用的进制转换函数:
1. FormatInt
将 int64 类型转换成指定进制的字符串。
func FormatInt(i int64, base int) string
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
i := int64(255)
str := strconv.FormatInt(i, 16)
fmt.Println("转换导致:", str)
}
2. ParseInt
将字符串转换成 int64 类型,拥护多种进制。
func ParseInt(s string, base int, bitSize int) (i int64, err error)
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "ff"
i, err := strconv.ParseInt(str, 16, 64)
if err != nil {
fmt.Println("转换差错:", err)
} else {
fmt.Println("转换导致:", i)
}
}
五、差错处理
`strconv` 包在转换过程中也许会遇到差错,如非法字符串、超出范围等。所以,正确处理差错是非常重要的。在调用转换函数时,如果返回的差错不为 `nil`,则需要利用差错类型进行相应的处理。
示例代码:
package main
import (
"fmt"
"strconv"
"errors"
)
func main() {
str := "abc"
i, err := strconv.Atoi(str)
if err != nil {
if errors.Is(err, strconv.ErrSyntax) {
fmt.Println("语法差错")
} else if errors.Is(err, strconv.ErrRange) {
fmt.Println("范围差错")
} else {
fmt.Println("未知差错:", err)
}
} else {
fmt.Println("转换导致:", i)
}
}
六、总结
`strconv` 包是 Golang 中处理字符串与基本数据类型转换的重要工具。通过本文的介绍,相信你已经对 `strconv` 包有了更深入的了解。在实际开发中,灵活使用 `strconv` 包,能够让你更高效地处理数据类型转换,尽也许降低损耗代码质量。