在 Go 语言里,基本数据类型之间的转换是一项常见操作。下面会详细介绍不同基本数据类型之间的转换方法。
在 Go 语言中,不同大小的整数类型可以相互转换,不过要留意可能出现的溢出问题。
package main
import "fmt"
func main() {
var a int8 = 120
var b int16
b = int16(a)
fmt.Printf("a 的类型是 %T,值是 %d\n", a, a)
fmt.Printf("b 的类型是 %T,值是 %d\n", b, b)
}
package main
import "fmt"
func main() {
var c int = 10
var d float64
d = float64(c)
fmt.Printf("c 的类型是 %T,值是 %d\n", c, c)
fmt.Printf("d 的类型是 %T,值是 %f\n", d, d)
var e float64 = 10.9
var f int
f = int(e)
fmt.Printf("e 的类型是 %T,值是 %f\n", e, e)
fmt.Printf("f 的类型是 %T,值是 %d\n", f, f)
}
在 Go 语言中,布尔类型bool
和其他基本数据类型(像整数、浮点数等)不能直接进行转换。
Go 语言提供了strconv
包来实现字符串和其他类型的转换。
package main
import (
"fmt"
"strconv"
)
func main() {
// 整数转字符串
num := 123
str := strconv.Itoa(num)
fmt.Printf("num 的类型是 %T,值是 %d\n", num, num)
fmt.Printf("str 的类型是 %T,值是 %s\n", str, str)
// 字符串转整数
str2 := "456"
num2, err := strconv.Atoi(str2)
if err != nil {
fmt.Println("转换出错:", err)
} else {
fmt.Printf("str2 的类型是 %T,值是 %s\n", str2, str2)
fmt.Printf("num2 的类型是 %T,值是 %d\n", num2, num2)
}
}
strconv.FormatFloat
这个函数可将浮点数转换为字符串,可以指定精度和格式。
package main
import (
"fmt"
"strconv"
)
func main() {
num := 3.14159
str := strconv.FormatFloat(num, 'f', 2, 64)
fmt.Printf("浮点数 %f 转换为字符串 %s\n", num, str)
}
在上述代码中,'f'
代表十进制表示,2
是保留的小数位数,64
表示浮点数类型为float64
。
strconv.ParseFloat
该函数用于把字符串转换为浮点数。若字符串无法转换为有效的浮点数,会返回一个错误。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "3.14"
num, err := strconv.ParseFloat(str, 64)
if err != nil {
fmt.Println("转换出错:", err)
} else {
fmt.Printf("字符串 %s 转换为浮点数 %f\n", str, num)
}
}
strconv.FormatBool
此函数用于把布尔值转换为字符串"true"
或者"false"
。
package main
import (
"fmt"
"strconv"
)
func main() {
b := true
str := strconv.FormatBool(b)
fmt.Printf("布尔值 %v 转换为字符串 %s\n", b, str)
}
strconv.ParseBool
该函数用于把字符串转换为布尔值。字符串可以是"1"
, "t"
, "T"
, "true"
, "TRUE"
, "True"
等表示true
,或者"0"
, "f"
, "F"
, "false"
, "FALSE"
, "False"
等表示false
。若字符串无法转换为有效的布尔值,会返回一个错误。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "true"
b, err := strconv.ParseBool(str)
if err != nil {
fmt.Println("转换出错:", err)
} else {
fmt.Printf("字符串 %s 转换为布尔值 %v\n", str, b)
}
}
仅介绍一部分strconv包的函数,大家如果要用其他函数可以自行查询使用!
strconv
包提供了丰富的函数,能够方便地实现字符串和基本数据类型之间的转换。在使用这些函数时,要留意错误处理,因为转换可能会失败。