Go 语言的
strconv
包提供了用于基本数据类型之间转换的函数,包括字符串到其他基本类型的转换,以及其他基本类型到字符串的转换。
字符串转换为基本数据类型
strconv.Atoi
:将字符串转换为int
strconv.ParseBool
:将字符串转换为bool
strconv.ParseFloat
:将字符串转换为float64
strconv.ParseInt
:将字符串转换为int64
,可以指定进制strconv.ParseUint
:将字符串转换为uint64
,可以指定进制
package main
import (
"fmt"
"log"
"strconv"
)
func main() {
//字符串转换为基本数据类型
//----------------------------------- strconv.Atoi - 将字符串转换为 int。
intStr := "123"
intVal, err := strconv.Atoi(intStr)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v,%T\n", intVal, intVal)
fmt.Println(intVal) // 输出: 123
//----------------------------------- strconv.ParseBool - 将字符串转换为 bool。
boolStr := "true"
boolVal, err := strconv.ParseBool(boolStr)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v,%T\n", boolVal, boolVal)
fmt.Println(boolVal) // 输出: true
//----------------------------------- strconv.ParseFloat - 将字符串转换为 float64。
floatStr := "123.45"
floatVal, err := strconv.ParseFloat(floatStr, 64)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v,%T\n", floatVal, floatVal)
fmt.Println(floatVal) // 输出: 123.45
//----------------------------------- strconv.ParseInt - 将字符串转换为 int64,可以指定进制。
intStrParseInt := "123" // 默认为10进制
intValParseInt, err := strconv.ParseInt(intStrParseInt, 10, 64)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v,%T\n", intValParseInt, intValParseInt)
fmt.Println(intValParseInt) // 输出: 123
//----------------------------------- 2进制
binStr := "11010001"
var intVal2, err2 = strconv.ParseInt(binStr, 2, 64)
if err2 != nil {
log.Fatal(err2)
}
fmt.Printf("%v,%T\n", intVal2, intVal2)
fmt.Println(intVal2) // 输出: 209
//-----------------------------------strconv.ParseUint - 将字符串转换为 uint64,可以指定进制。
uintStr := "123"
uintVal, err := strconv.ParseUint(uintStr, 10, 64)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v,%T\n", uintVal, uintVal)
fmt.Println(uintVal) // 输出: 123
}
基本数据类型转换为字符串
strconv.Itoa
:将int
转换为字符串strconv.FormatBool
:将bool
转换为字符串strconv.FormatFloat
:将float64
转换为字符串,可以指定格式化选项strconv.FormatInt
:将int64
转换为字符串,可以指定进制strconv.FormatUint
:将uint64
转换为字符串,可以指定进制
package main
import (
"fmt"
"strconv"
)
func main() {
//基本数据类型转换为字符串
//-----------------------------------strconv.Itoa - 将 int 转换为字符串。
intVal := 123
intStr := strconv.Itoa(intVal)
fmt.Printf("%v,%T\n", intStr, intStr)
fmt.Println(intStr) // 输出: 123
//strconv.FormatBool - 将 bool 转换为字符串。
boolVal := true
boolStr := strconv.FormatBool(boolVal)
fmt.Printf("%v,%T\n", boolStr, boolStr)
fmt.Println(boolStr) // 输出: true
//-----------------------------------strconv.FormatFloat - 将 float64 转换为字符串,可以指定格式化选项。
floatVal := 123.45
floatStr := strconv.FormatFloat(floatVal, 'f', 2, 64)
fmt.Printf("%v,%T\n", floatStr, floatStr)
fmt.Println(floatStr) // 输出: 123.45
//-----------------------------------strconv.FormatInt - 将 int64 转换为字符串,可以指定进制。
intVal64 := int64(123)
intStr64 := strconv.FormatInt(intVal64, 10) // 10进制
fmt.Printf("%v,%T\n", intStr64, intStr64)
fmt.Println(intStr64) // 输出: 123
//----------------------------------- 2进制
intStr2 := strconv.FormatInt(intVal64, 2)
fmt.Printf("%v,%T\n", intStr2, intStr2)
fmt.Println(intStr) // 输出: 1111011
//-----------------------------------strconv.FormatUint - 将 uint64 转换为字符串,可以指定进制。
uintVal := uint64(123)
uintStr := strconv.FormatUint(uintVal, 10) // 10进制
fmt.Printf("%v,%T\n", uintStr, uintStr)
fmt.Println(uintStr) // 输出: 123
//----------------------------------- 16进制
uintStr = strconv.FormatUint(uintVal, 16)
fmt.Printf("%v,%T\n", uintStr, uintStr)
fmt.Println(uintStr) // 输出: 7b
}