go-09-类型转换

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-09-类型转换相关的知识,希望对你有一定的参考价值。

一、数字类型的转换

总体上类型转换的用法非常简单,和 Python 语言中类似, 只需要使用与新类型(转换后的类型)同名的函数包裹需要被转换的变量或者数据即可。

// 整型转为浮点型
age := 41
marsAge := float64(age)

注意:
除了 整型和浮点型需要进行转换外,还有有符号和无符号整数,以及各种不同长度的类型之间都需要进行转换。
从取值范围小的类型转换为取值范围大的类型总是比较安全的,其他的转换存在风险。
例如, uint32 变量的最大值可以是 40 亿,但 int32 变量的最大值只能是 20 亿。

在将浮点数转换为整数的时候,小数点后面的数字将会被截断,而不会进行四舍五入。

    earthDays := 365.892
    fmt.Println(int(earthDays)) // 365

二、 字符串的转换

1 将代码点转换为字符

    var pi rune = 960
    var alpha rune = 940
    var bang byte = 33
    fmt.Print(string(pi),string(alpha),string(bang)) // πά!

2 将一串数字转换为 string

package main

import (
    "fmt"
    "strconv"
)
func main()
    count := 10
    // 方法一: stronv 包中的 Itoa 函数
    str := "计数为 " + strconv.Itoa(count)
    fmt.Println(str) // "计数为 10"

    // 方法二:fmt.Sprintf 函数,它会返回字符串值
    str1 := fmt.Sprintf("计数为 %v", count)
    fmt.Println(str1) // "计数为 10"

3 将字符串转换为数值

    num, err := strconv.Atoi("10")
    fmt.Println(num, err) // 10 <nil>

三、布尔类型转换

1 将布尔类型转换为字符串

    ready := false
    readyText := fmt.Sprintf("%v", ready)
    fmt.Println("Are you ready?", readyText)

在有些语言中,通常会使用数字 0 或者空字符串 "" 来表示 false,
用数字 1 或者非空字符串表示 true

但在 Go 语言中并没有与之相等的数字值或者字符串值,因此如下代码是错误的:

var f = false
fText := string(f)
var fn = bool(1)

以上是关于go-09-类型转换的主要内容,如果未能解决你的问题,请参考以下文章

go-09-类型转换

无法将对象转换为可包裹

[Java]_[初级]_[装箱和拆箱的陷阱-不要使用==进行包裹类型wrapper class比较]

[Java]_[初级]_[装箱和拆箱的陷阱-不要使用==进行包裹类型wrapper class比较]

标准库模块——json模块

go语言之类型转换