📜  Golang 中的类型转换或类型转换(1)

📅  最后修改于: 2023-12-03 14:41:34.657000             🧑  作者: Mango

Golang中的类型转换或类型转换

在Golang中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。在某些情况下,我们可能需要将一个类型的值转换为另一个类型,以便进行计算或满足特定的需求。

1. 基本类型之间的转换

Golang提供了一些内置函数来进行基本类型之间的转换:

  • int转换为float64
var num int = 10
var floatNum float64 = float64(num)
  • float64转换为int
var floatNum float64 = 10.5
var num int = int(floatNum)
  • int转换为string
var num int = 10
var str string = strconv.Itoa(num)
  • string转换为int
var str string = "10"
num, _ := strconv.Atoi(str) // 使用 "_ "忽略错误
  • string转换为float64
var str string = "10.5"
floatNum, _ := strconv.ParseFloat(str, 64) // 使用 "_ "忽略错误
2. 自定义类型之间的转换

在Golang中,自定义类型之间的转换需要显式进行,使用类型名称进行转换。

type MyInt int

var num MyInt = 10
var regularInt int = int(num)  // 自定义类型 MyInt 转换为 int
var newNum MyInt = MyInt(regularInt)  // int 转换为自定义类型 MyInt
3. 接口类型之间的转换

在Golang中,接口类型之间的转换是通过类型断言来实现的。

var val interface{} = [...]int{1, 2, 3}

// 检查接口类型的值是否为数组类型
arr, ok := val.([3]int)
if ok {
    fmt.Println("接口类型转为数组类型成功:", arr)
} else {
    fmt.Println("接口类型转为数组类型失败")
}
4. 结构体类型之间的转换

在Golang中,结构体类型之间的转换可以通过同名字段进行转换。

type Person struct {
    Name string
    Age  int
}

type Employee struct {
    Name string
    Age  int
    Company string
}

var p1 Person = Person{
    Name: "Alice",
    Age:  25,
}

var e1 Employee = Employee(p1)  // Person类型转换为Employee类型

fmt.Println(e1) // 输出: {Alice 25 ""}

var e2 Employee = Employee{
    Name: "Bob",
    Age:  30,
    Company: "ABC Inc",
}

var p2 Person = Person(e2)  // Employee类型转换为Person类型

fmt.Println(p2) // 输出: {Bob 30}
5. 数组类型之间的转换

在Golang中,数组之间的转换需要逐个元素进行转换。

var arr1 [3]int = [3]int{1, 2, 3}
var arr2 [3]int

for i, v := range arr1 {
    arr2[i] = v
}

fmt.Println(arr2) // 输出: [1 2 3]

以上就是关于Golang中类型转换或类型转换的介绍。在进行类型转换时,务必注意类型之间的兼容性,否则可能出现不可预料的结果或编译错误。