一、基本数据类型转 string
方式1: 使用 fmt.Sprintf() 函数
- 整型使用 %d 或 %v
- 浮点型使用 %f 或 %v
- 布尔型使用 %t 或 %v
- 字符型使用 %c 或 %v
package main
import "fmt"
func main() {
var n int = 42
var f float64 = 3.14
var b bool = true
var c rune = 'A'
var s string = fmt.Sprintf("%d", n)
var s2 string = fmt.Sprintf("%f", f)
var s3 string = fmt.Sprintf("%t", b)
var s4 string = fmt.Sprintf("%c", c)
}
方式2: 使用 strconv 包
- 整型使用 strconv.Itoa() 或 strconv.FormatInt()
- 浮点型使用 strconv.FormatFloat()
- 布尔型使用 strconv.FormatBool()
- 字符型使用 strconv.QuoteRune() 或 strconv.FormatInt()
package main
import(
"fmt"
"strconv"
)
func main() {
var n int = 42
var f float64 = 3.14
var b bool = true
var c rune = 'A'
var s string = strconv.Itoa(n)
var s2 string = strconv.FormatFloat(f, 'f', -1, 64)
var s3 string = strconv.FormatBool(b)
var s4 string = strconv.QuoteRune(c)
fmt.Println("整数 n 转字符串 s =", s)
fmt.Println("浮点数 f 转字符串 s2 =", s2)
fmt.Println("布尔值 b 转字符串 s3 =", s3)
fmt.Println("字符 c 转字符串 s4 =", s4)
}
二、 string 转基本数据类型
使用 strconv 包
- 转整数使用 strconv.Atoi() 或 strconv.ParseInt()
- 转浮点数使用 strconv.ParseFloat()
- 转布尔值使用 strconv.ParseBool()
- 转字符使用 strconv.UnquoteRune() 或 strconv.ParseInt()
- 如果需要转为 int32 或 int64,可以使用 strconv.ParseInt(str, 10, 32) 或 strconv.ParseInt(str, 10, 64),并指定位数
- 如果需要转为 float32 或者 float64,可以使用 strconv.ParseFloat(s, 32) 或 strconv.ParseFloat(s, 64),并指定位数
package main
import(
"fmt"
"strconv"
)
func main() {
var s string = "42"
var s2 string = "3.14"
var s3 string = "true"
var s4 string = "'A'"
n, _ := strconv.Atoi(s)
f, _ := strconv.ParseFloat(s2, 64)
b, _ := strconv.ParseBool(s3)
unquoted, _ := strconv.Unquote(s4)
c := []rune(unquoted)[0]
fmt.Println("字符串 s 转整数 n =", n)
fmt.Println("字符串 s2 转浮点数 f =", f)
fmt.Println("字符串 s3 转布尔值 b =", b)
fmt.Println("字符串 s4 转字符 c =", c)
n32, _ := strconv.ParseInt(s, 10, 32)
n64, _ := strconv.ParseInt(s, 10, 64)
fmt.Println("字符串 s 转 int32 n32 =", n32)
fmt.Println("字符串 s 转 int64 n64 =", n64)
f32, _ := strconv.ParseFloat(s2, 32)
f64, _ := strconv.ParseFloat(s2, 64)
fmt.Println("字符串 s2 转 float32 f32 =", f32)
fmt.Println("字符串 s2 转 float64 f64 =", f64)
}
三、 string 类型转基本数据类型的注意事项
- strconv.ParseInt("hello111", 10, 64) 会返回错误,因为字符串 "hello111" 不是一个有效的整数
- strconv.ParseInt() 和 strconv.ParseFloat() 需要指定基数和位数,否则可能会得到不正确的结果。例如,strconv.ParseInt("42", 10, 0) 会将字符串 "42" 转换为整数 42,但 strconv.ParseInt("42", 0, 0) 会根据字符串的前缀自动判断基数,可能会将 "42" 解析为八进制数 34。
- 转换过程中需要保证能转为正确的格式,否则会返回错误。例如,使用 strconv.Atoi() 转换一个非数字字符串会返回错误