golang 数据类型转换

本文展示了在Go语言中如何进行不同类型的数据转换,包括int到int8、int16、int32、float32的转换,以及int、float、bool到string的转换,和反之的转换。使用的关键函数包括strconv.FormatInt、strconv.ParseInt、strconv.Atoi等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型转换

  1. 同底层数据类型转换 ,比如将 int 类型数据转换成 int8 int16 int32 int64

package main

import "fmt"

func main() {
    //同底层数据类型之间的转换

    // 定义数字类型变量
    var num int = 8
    var num1 int8
    var num2 int16
    var num3 int32
    var num4 float32

    // 转换
    num1 = int8(num)
    num2 = int16(num)
    num3 = int32(num)
    num4 = float32(num)
    fmt.Printf("num1 类型: %T, num1=%v \n",num1,num1)
    fmt.Printf("num2 类型: %T, num2=%v \n",num2,num2)
    fmt.Printf("num3 类型: %T, num3=%v \n",num3,num3)
    fmt.Printf("num4 类型: %T, num4=%v \n",num4,num4)
    fmt.Printf("num 类型: %T, num=%v \n",num,num)


}

运行结果:

注意: 1) 类型转换只是将某个变量的值转换成其他类型,而被转换的变量没有影响

2) 高精度int类型转低精度int类型,如果超出低精度范围则会做溢出处理,程序不会报错

  1. 不同数据类型转换, 比如将 int转成string ,string转成 int32

2.1 int bool转string

package main

import (
    "fmt"
    "strconv"
)

func main() {
    //不同底层数据类型之间的转换 int int8 转 string

    // 定义数字类型变量
    var num int = 8
    var num2 int16 = 10
    var num3 float32 = 12.12
    var bool1 bool = true

    // 转换
    //注意参数: 第一个参数 必须是int64类型, 第二个参数 2-36 表示数值的进制
    str1 := strconv.FormatInt(int64(num),10)
    fmt.Printf("str type: %T, str=%v \n",str1,str1)

    str2 := strconv.FormatInt(int64(num2),10)
    fmt.Printf("str type: %T, str=%v \n",str2,str2)

    // 参数1:只能是float64 ,参数2:格式 ,参数3:保留小数位数, 参数4:所转类型位数
    str3 := strconv.FormatFloat(float64(num3),'f',2,32)
    fmt.Printf("str type: %T, str=%v \n",str3,str3)

    str4 := strconv.FormatBool(bool1)
    fmt.Printf("str type: %T, str=%v \n",str4,str4)

}

执行结果:

2.2 string转 int bool

package main

import (
    "fmt"
    "strconv"
)

func main() {
    //不同底层数据类型之间的转换  string转 int int8

    // 定义变量
    var str1 string = "8"
    var str2 string = "12.12"
    var str3 string = "true"

    // 转换
    // 返回的int64, 可以根据需要再进行同底层转换
    num1,_ := strconv.ParseInt(str1,10,64)
    fmt.Printf("num1 类型:%T , num1=%v \n",num1,num1)

    num2,_ := strconv.ParseFloat(str2,64)
    fmt.Printf("num2 类型:%T , num2=%v \n",num2,num2)

    bool1,_ := strconv.ParseBool(str3)
    fmt.Printf("bool1 类型:%T , bool1=%v \n",bool1,bool1)
}

执行结果:

  1. 如果是单纯的 int转 sting 或者 string 转 int 那么就可以用 strconv的 Itoa(),Atoi()

package main

import (
    "fmt"
    "strconv"
)

func main() {
    //int 转 string
    var i int = 12122
    str := strconv.Itoa(i)
    fmt.Printf("str 类型:%T , str=%v \n",str,str)

    //string 转 int
    var str1 string = "1123"
    intData,_ := strconv.Atoi(str1)
    fmt.Printf("intData 类型:%T , intData=%v \n",intData,intData)

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值