📜  Go类型转换(1)

📅  最后修改于: 2023-12-03 15:15:25.048000             🧑  作者: Mango

Go类型转换

在Go语言中,类型转换是将一种类型的值转换为另一种类型的值。类型转换在编程中非常常见,尤其在涉及不同类型数据的计算和处理的时候。

基本类型转换
数值类型转换

数值类型转换的规则通常是将小的类型转换为大的类型,例如将int8转换为int16。但是,请注意,如果目标类型太小,源类型将被截断并可能会导致不正确的结果。

以下是一些数字类型之间的转换例子:

var i int = 42
var f float64 = float64(i)
var u uint = uint(f)

在这个例子中,我们从int类型转换为float64类型,然后再将其转换为uint类型。注意一下float64类型的精度更高,可以以小数的形式存储整数。

字符串和数值类型之间的转换

我们可以使用包含strconv包中的函数将字符串和数值类型之间进行转换。

对于数字类型和字符串类型之间的转换,我们可以使用以下函数:

  • strconv.Itoa: 将int类型转换为字符串类型。
  • strconv.ParseInt: 将字符串类型转换为int类型。

下面是一个示例:

import (
    "fmt"
    "strconv"
)

func main() {
    // 将字符串转换为int类型
    i, err := strconv.ParseInt("42", 10, 64)
    if err != nil {
        panic(err)
    }
    fmt.Println(i)

    // 将int类型转换为字符串
    s := strconv.Itoa(42)
    fmt.Println(s)
}
字符串和布尔类型之间的转换

我们可以使用以下函数将字符串和bool类型之间进行转换:

  • strconv.ParseBool: 将字符串类型转换为bool类型 。
  • strconv.FormatBool: 将bool类型转换为字符串类型。

这里是一个例子:

import (
    "fmt"
    "strconv"
)

func main() {
    // 将字符串转换为bool类型
    b, err := strconv.ParseBool("true")
    if err != nil {
        panic(err)
    }
    fmt.Println(b)

    // 将bool类型转换为字符串类型
    s := strconv.FormatBool(true)
    fmt.Println(s)
}
自定义类型转换

Go语言中可以自定义类型。当自定义类型和内置类型之间进行转换时,需要使用类型断言。

在这里,类型断言意味着我们可以将自定义类型转换为内置类型,反之亦然。

以下是自定义类型之间进行转换的示例:

type myInt int

func main() {
    var i myInt = 42
    var j int = int(i)
    fmt.Println(j)

    var x int = 42
    var y myInt = myInt(x)
    fmt.Println(y)
}

在这个例子中,我们定义了一个类型myInt。我们可以将myInt类型转换为int类型,或将int类型转换为myInt类型。

总结

Go语言中使用类型转换是进行代码编写的重要部分。在使用类型转换时,请记住必须进行适当的类型检查和类型断言,以避免出现错误。