03-数据类型转换

数值类型转换

  • C语言中存在显式转换和隐式转换
 在C语言中如何转换
    1.1隐式转换
    int a = 10;
    int b = 3.0
    int num = 3.14;   double res = a/b;
    1.2显示转换
    int a = 10;
    int b = 3.0
    double res = (double)a/b;
  • Go语言中只有显式转换
Go语言中如何转换
    在Go语言中只有显示转换, 没有隐式转换
    格式: 数据类型(被转换的数据)
  • Go语言中数值类型转换注意点
注意点:
    1.数据类型(被转换的数据)格式一般用于除了字符串和布尔类型以外的其它基本数据类型之间转换
    2.不能对一个常量进行强制转换
    3.在Go语言中数据类型必须一模一样, 才能直接赋值
    4.能够直接赋值的特殊情况 byte->uint8, rune->int32
    5.bool类型不能强制转换为整型
package main

import "fmt"

func main() {
    //1.Go语言没有隐式转换
    //var num int = 3.14  会报错

    //2.不能对一个常量进行转换
    //var num1 int = int(3.14)

    //3.正确转换方法
    num3 := 3.14
    var num4 int = int(num3)
    fmt.Println(num4) //3

    //4. 数字类型必须一样的才能直接赋值
    var num int64 = 10
    var num2 int32 = num //会报错
    fmt.Println(num2)

    //赋值特殊情况
    // byte本质就是uint8起的别名,所以可以互相传递值
    var ch byte = 'a'
    var num uint8 = ch
    fmt.Println(num) //97

    //rune --> int32
    var ch1 rune = '妞'
    var num2 int32 = ch1
    fmt.Println(num2) //没有报错


    //5.布尔类型不能强制转换为整型
    var b bool = false
    var num int = b //会报错

}

数值类型转换为字符串类型

  • 整型转字符串类型
//1.strconv.FormatXxx()
    //整型转换为字符串类型strconv.FormatInt()
    //第一个参数: 需要转换的数据, 必须是int64类型的数据不是的话需要手动强转
    //第二个参数: 转换为多少进制的字符串,2就是代表以二进制显示字符串
    var num int = 9
    var str string = strconv.FormatInt(int64(num), 2)
    fmt.Println(str)
  • 浮点类型转字符串类型
//2. 浮点类型转换字符串类型
    //浮点类型转换为字符串类型使用strconv.FormatFloat(float64(num),'f', -1,32)
    //第一个参数: 需要转换的小数,必须是float64类型
    //第二个参数: 按照什么格式转换 'f'代表小数格式表示,'e'代表指数形式表示
    //第三个参数: 保留小数位数, -1代表以原始数据数据类型精度保留位数
    //第四个参数: 原始类型的标志  float32 --> 32  float64 --> 64
    var num float32 = 3.1564641321653213
    var str string = strconv.FormatFloat(float64(num),'f', -1,32)
    fmt.Println(str)
  • 布尔类型转字符串
//3.布尔类型转换为字符串类型
    //布尔类型转换为字符串类型 var str string = strconv.FormatBool(bo)
    //参数: 需要转换的数据
    var bo bool = true
    var str string = strconv.FormatBool(bo)
    fmt.Println(str)
  • int类型转字符串简易函数
//4.int类型转换为字符串类型简单方式
    //strconv.Itoa()
    //注意点: 参数只能是int类型的,不是的话需要手动强转为int类型
    var num int64 = 555
    var str string = strconv.Itoa(int(num))
    fmt.Println(str)

字符串类型转数值类型

  • 字符串转整型
//1.字符串类型转整型
    //函数strconv.ParseInt(str,10,32)
    //第一个参数: 需要转换的字符串
    //第二个参数: 被转换的字符串保存的整数是多少进制的 10代表10进制
    //第三个参数: 期望转换为多少位的整数(不一定准确), 换句话说就是要转换为多少位整数
    //注意点: 如果指定的字符串转换为整型的数字超出了bitSize指定的位数,则会转换不准确
    //返回值:
    //返回值1: 转换之后的数值,int64类型
    //返回值2: err,如果转换成功则返回nil,如果转换失败则不返回nil
    var str string = "129"
    num, err := strconv.ParseInt(str,10,8)
    if err != nil{
        fmt.Printf("转换失败\n")
    }else{
        fmt.Println(num)
        fmt.Printf("%T\n", num) //int64
    }
  • 字符串转浮点型
//2. 字符串转浮点类型
    //func ParseFloat(s string, bitSize int) (f float64, err error)
    // 第一个参数: 需要转换的字符串
    // 第二个参数: 要将字符串中的小数转换为单精度还是双精度, 单精度传入32, 双精度传入64
    // 返回值:
    // 第一个返回值: 转换之后的小数, float64类型
    // 第二个返回值: 转换成功返回nil, 转换失败不为nil
    var str string = "3.1654613216"
    num, err := strconv.ParseFloat(str, 64)
    if err != nil{
        fmt.Printf("转换失败\n")
    }else{
        fmt.Println(num)
        fmt.Printf("%T\n", num) //float64
    }
  • 字符串转布尔型
//3. 字符串转换为布尔类型
    //func FormatBool(b bool) string
    //参数: 转换的字符串
    //返回值: bool类型true/false


    var str string = "true"
    flag,err := strconv.ParseBool(str)
    if err != nil{
        fmt.Printf("转换失败\n")
    }else{
        fmt.Println(flag)
        fmt.Printf("%T\n", flag) //bool
    }
  • 字符串转int简易方法
//4. 字符串转int类型简易函数

    var str string = "10"
    num, err := strconv.Atoi(str)
    if err != nil{
        fmt.Printf("转换失败\n")
    }else{
        fmt.Println(num)
        fmt.Printf("%T\n", num) //int
    }

你可能感兴趣的:(03-数据类型转换)