3.15.3 string 数据类型转换为基本数据类型

3.15.3 string 数据类型转换为基本数据类型

刚才我们讲了基本数据类型转化位 string 类型,接下来我就要将 string 数据类型转换为基本数据类型。

我们将 string 类型转换为基本数据类型我们也需要用到 strconv 包的函数。

golang 官方文档地址:https://studygolang.com/pkgdoc

这时候需要使用到下面的 4 个函数:

3.15.3.1 将 string 类型转换为 bool 类型演示范例

package main

import (
    "fmt"       // 使用 fmt 包
    "strconv"   // 使用 strconv 包
)

// 演示 golang 中 string 类型转换为基础数据类型
func main()  {
    var str string = "true" // 这里给 str 赋值为 true 并且它是一个 string 数据类型
    var b bool              // 给 b 定义为 bool 数据类型

    // b , _= strconv.ParseBool(str)
    // 说明:
    // 1、strconv.ParseBool(str) 该函数本身会返回两个值,第一个值为 bool 值,第二个值为 error
    // 2、这时候我关心的是 bool 值对这个 error 不关心所以我使用下划线来忽略第二个返回的 error 值

    // 将 str 的 string 类型的 true 值传给 b 然后 b 赋值为 true 
    b , _ = strconv.ParseBool(str) 
    fmt.Printf("b type %T b=%v",b,b)
}

CMD 输出结果:

通过 CMD 执行之后我们会发现 b 的类型现在就是 bool 并且它的结果为 true

3.15.3.2 将 string 类型转换为 int 数据类型

package main

import (
    "fmt"
    "strconv"
)

func main()  {
    var str2 string = "12345"
    var n1 int64 

    // strconv.ParseInt(str2,10,0)
    // 说明:
    // 1、 strconv.ParseInt(str2,10,0) 中的 str2 是取需要转换的 string 类型变量
    // 2、 10 表示为 10 进制
    // 3、 0 表示为默认数据类型 也就是 n1 的 int64 类型
    n1, _ = strconv.ParseInt(str2,10,0)
    fmt.Printf("n1 type %T n1=%v",n1,n1)
}

CMD 输出结果:

通过执行发现 n1 的类型为 int64 并且 n1 继承了 str2 string 数据类型的值 12345

假如我想将 n1 的 int64 转为 int 类型我们可以通过如下代码操作

package main

import (
    "fmt"
    "strconv"
)

func main()  {
    var str2 string = "12345"       // 给 str2 定义为 string 数据类型并且赋值为 12345
    var n1 int64                    // 给 n1 定义为 int64 数据类型
    var n2 int                      // 给 n2 定义为 int 数据类型
    
    // strconv.ParseInt(str2,10,0)
    // 说明:
    // 1、 strconv.ParseInt(str2,10,0) 中的 str2 是取需要转换的 string 类型变量
    // 2、 10 表示为 10 进制
    // 3、 0 表示为默认数据类型 也就是 n1 的 int64 类型
    n1, _ = strconv.ParseInt(str2,10,0) 
    fmt.Printf("n1 type %T n1=%v",n1,n1)
    n2 = int(n1)    // 将 n1 再上面拿到了 str2 变量的值 12345 转换为 int 类型
    fmt.Printf("n2 type %T n2=%v",n2,n2)    // 通过 printf 输出初始化结果
}

CMD 输出结果:

3.15.3.3 将 string 类型转换为 float64 类型

package main

import (
    "fmt"
    "strconv"
)
func main()  {
    var str3 string = "123.456" // str3 定义为 string 数据类型并且赋值为 123.456
    var f1 float64              // 给 f1 定义为 float64 数据类型

    // f1, _ = strconv.ParseFloat(str3,64) 说明:
    // 1、strconv.ParseFloat(str3,64) str3 表示我们需要转的 string 类型变量为 str3,将他转换为 float 类型
    // 2、64 表示为我们要转换为 float64 数据类型
    // 3、f1, _  表示为我们也需要忽略 error 值
    f1, _ = strconv.ParseFloat(str3,64)
    fmt.Printf("f1 type %T f1=%v",f1,f1)
}

CMD 执行结果

f1 的类型依旧是 float64 并且还继承了 str3 的值 123.456

3.15.3.4 将 int64 或者 float64 转换为 int32 、float32

3.15.3.4.1 将 float64 转换为 float32

因为在 strconv 包中默认都是将 int 和 float 数据类型返回为 64 位,如果希望得到 int32 、float64 等只需要将他们的数据类型转为 int32 和 float64 即可如下处理,但是我们在将 int64 和 float64 转化为 int32 和 float32 的时候要考虑数值范围问题,因为我们是将一个大的数据类型转换为下的需要关心数值溢出问题,所以我们在转的时候要根据它的实际情况来转

范例如下:

package main

import (
    "fmt"
    "strconv"
)

func main()  {
    var str3 string = "123.456"
    var f1 float64
    var f2 float32
    
    // f1, _ = strconv.ParseFloat(str3,64) 说明:
    // 1、strconv.ParseFloat(str3,64) str3 表示我们需要转的 string 类型变量为 str3,将他转换为 float 类型
    // 2、64 表示为我们要转换为 float64 数据类型
    // 3、f1, _  表示为我们也需要忽略 error 值
    f1, _ = strconv.ParseFloat(str3,64)
    f2 = float32(f1)    // 将 f1 转位 float32 数据类型,然后再赋值给 f2
    fmt.Printf("f2 type %T f2=%v",f2,f2)    // 输出 f2 类型和 f2 的值
}

CMD 输出结果:

f2 的数据类型已经位 float32 并且值为 123.456

int 数据类型转换同上

点赞