Golang类型转换和检查
包strconv
实现与基本数据类型与字符串转换。
如何在Go中将字符串转换为int类型?
ATOI
将字符串转换为int类型。将整数转换为十进制字符串形式。ParseInt
解释给定基数(0,2到36)和位大小(0到64)中的字符串s并返回相应的值i。将字符串转换为十进制整数
package main
import "strconv"
func main () {
strVar := "100"
intVar, _ := strconv.Atoi(strVar)
strVar1 := "-52541"
intVar1, _ := strconv.ParseInt(strVar1, 10, 32)
strVar2 := "101010101010101010"
intVar2, _ := strconv.ParseInt(strVar2, 10, 64)
fmt.Printf("intVar:%d\n", intVar)
fmt.Printf("intVar1:%d\n", intVar1)
fmt.Printf("intVar2:%d\n", intVar2)
}
- 结果
intVar:100
intVar1:-52541
intVar2:101010101010101010
如何在Go中将字符串转换为float类型?
ParseFloat
将字符串s转换为浮点数,其精度由bitSize
指定:32为float32
,或64为float64
。
package main
import(
"fmt"
"strconv"
)
func main () {
s := "3.1415926535"
f, _ := strconv.ParseFloat(s, 64)
fmt.Printf("%T,%v \n", f, f)
s1 := "-3.141"
f1, _ := strconv.ParseFloat(s1, 64)
fmt.Printf("%T,%v \n", f1, f1)
s2 := "-3.141"
f2, _ := strconv.ParseFloat(s2, 32)
fmt.Printf("%T,%v \n", f2, f2)
}
- 结果
float64,3.1415926535
float64,-3.141
float64,-3.1410000324249268
如何在Go中将String转换为布尔数据类型转换?
ParseBool
返回字符串表示的布尔值。它接受1,t,T,TRUE,true,True,0,f,F,FALSE,false,False。任何其他值都会返回错误。
package main
import(
"fmt"
"strconv"
)
func main () {
s1 := "true"
b1, _ := strconv.ParseBool(s1)
fmt.Printf("%T,%v\n", b1, b1)
s2 := "t"
b2, _ := strconv.ParseBool(s2)
fmt.Printf("%T,%v\n", b2, b2)
s3 := "0"
b3, _ := strconv.ParseBool(s3)
fmt.Printf("%T,%v\n", b3, b3)
s4 := "F"
b4, _ := strconv.ParseBool(s4)
fmt.Printf("%T,%v\n", b4, b4)
}
- 结果
bool,true
bool,true
bool,false
bool,false
如何在Go中将Boolean Type转换为String?
FormatBool
函数用于将布尔变量转换为String。
package main
import(
"fmt"
"reflect"
"strconv"
)
func main () {
var b bool = true
fmt.Println(reflect.TypeOf(b))
var s string = strconv.FormatBool(true)
fmt.Println(reflect.TypeOf(s))
fmt.Println(s)
}
- 结果
bool
string
true
如何在Go中将Float转换为String类型?
-FormatFloat
将浮点数f转换为字符串s。
package main
import(
"fmt"
"reflect"
"strconv"
)
func main () {
var f float64 = 3.1415926535
fmt.Println(reflect.TypeOf(f))
fmt.Println(f)
var s = strconv.FormatFloat(f, 'E', -1, 32)
fmt.Println(reflect.TypeOf(s))
fmt.Println(s)
}
- 结果
float64
3.1415926535
string
3.1415927E+00
将整数类型转换为字符串类型
FormatInt
将整数i转换为String s。
package main
import(
"fmt"
"reflect"
"strconv"
)
func main () {
var i int64 = -654
fmt.Println(reflect.TypeOf(i))
fmt.Println(i)
var s string = strconv.FormatInt(i, 10)
fmt.Println(reflect.TypeOf(s))
fmt.Println(s)
}
- 结果
int64
-654
string
-654
将Int数据类型转换为Int16 Int32 Int64
package main
import (
"fmt"
"reflect"
)
func main () {
var i int = 10
fmt.Println(reflect.TypeOf(i))
i16 := int16(i)
fmt.Println(reflect.TypeOf(i16))
i32 := int32(i)
fmt.Println(reflect.TypeOf(i32))
i64 := int64(i)
fmt.Println(reflect.TypeOf(i64))
}
- 结果
int
int16
int32
int64
将Float32转换为Float64,将Float64转换为Float32
package main
import (
"fmt"
"reflect"
)
func main () {
var f32 float32 = 10.6556
fmt.Println(reflect.TypeOf(f32))
f64 := float64(f32)
fmt.Println(reflect.TypeOf(f64))
f64 = 1097.655698798798
fmt.Println(f64)
f32 = float32(f64)
fmt.Println(f32)
}
- 结果
float32
float64
1097.655698798798
1097.6556
在Int中将Int数据类型转换为Float
package main
import (
"fmt"
"reflect"
)
func main () {
var f32 float32 = 10.6556
fmt.Println(reflect.TypeOf(f32))
//会有精度损失
i32 := int32(f32)
fmt.Println(reflect.TypeOf(i32))
fmt.Println(i32)
f64 := float64(i32)
fmt.Println(reflect.TypeOf(f64))
fmt.Println(f64)
}
- 结果
float32
int32
10
float64
10