Appearance
类型转换
- 类型转换是将一个变量从一种类型转换为另一种类型。
字符串
转整形
- 使用
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")
}