Skip to content

类型转换

  • 类型转换是将一个变量从一种类型转换为另一种类型。

字符串

转整形

  • 使用strconv 包中的函数进行转换。
go
var str1 string = "123"
// 转int
int1, err := strconv.Atoi(str1)
if err != nil {
    fmt.Println("转换失败")
}
// 转int32
int2, err := strconv.ParseInt(str1, 10, 32)
if err != nil {
    fmt.Println("转换失败")
}
// 转int64
int3, err := strconv.ParseInt(str1, 10, 64)
if err != nil {
    fmt.Println("转换失败")
}
println(int1, int2, int3)

转浮点型

  • 使用strconv 包中的函数进行转换。
go
var str2 string = "123.456"
// 转float32
float1, err := strconv.ParseFloat(str2, 32)
if err != nil {
    fmt.Println("转换失败")
}
// 转float64
float2, err := strconv.ParseFloat(str2, 64)
if err != nil {
    fmt.Println("转换失败")
}
println(float1, float2)

转byte数组

  • 使用[]byte 进行转换。
go
var str3 string = "hello"
// 转byte 数组
byteArr := []byte(str3)
println(byteArr)

转切片

  • 使用strings.Split 进行转换。
go
var str1 string = "hello"
fmt.Println(strings.Split(str1, ""))

整形

整形互换

go
var int1 int = 123
var int2 int64 = 456

// int 转 int64
int_1 := int64(int1)
// int64 转 int
int_2 := int(int2)
// int 转 uint
uint1 := uint(int1)
// int 转 float32
float1 := float32(int1)
// int 转 float64
float2 := float64(int1)

转字符串

  • 使用strconv 包中的函数进行转换。
go
var int1 int = 123
var int2 int64 = 123
// 转字符串
str1 := strconv.Itoa(int1)
// 先转int 再转字符串
str2 := strconv.Itoa(int(int2))
println(str1,str2)

切片

转字符串

  • 使用strings.Join 进行转换。
go
var slice1 []string = []string{"hello","world"}
// 转字符串
fmt.Println(strings.Join(slice1, " "))

结构体

转接口

go
// 定义接口
type Person interface {
    Eat()
}

// 定义结构体
type Student struct {
    Name string
    Age  int
}
// 实现接口方法
func (s *Student) Eat() {
    fmt.Println(s.Name, "is eating")
}
// 当结构体实现了接口的所有方法,就可以将结构体转换为接口类型。
var p Person = &Student{Name: "张三", Age: 18}
p.Eat()

类型断言

  • 类型断言用于将接口类型转换为指定类型,其语法为:value.(T)
  • 只能把interface类型转换为指定类型。
go
var str interface{} = "string"
// 断言为字符串类型
newStr, ok := str.(string)
if ok {
    fmt.Printf("'%s' is a string\n", newStr)
} else {
    fmt.Println("conversion failed")
}