GO语言是静态语言,定义、赋值、运算必须类型一致才行,那对于数字与数字、字符串与数字、数字与字符串之间的转换,这里做一个简单总结。

数字类型互转

语法格式:Type(value)
兼容类型可以转换,不兼容类型不能

//int转int64
var a int = 10
var b int64 = int64(a)

//float转int
var c float64 = 3.14
var d int = int(c) // 3

//不兼容不能转换
b1 := true
a1 := int8(b1) // cannot convert b1 (type bool) to type int
字符串和基本类型互转

strconv包:字符串和基本类型之间的转换

// bool类型
//bool转str
    s1 := "true"
    b1, err := strconv.ParseBool(s1)

    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T, %t\n", b1, b1)

    //bool转str
    ss1 := strconv.FormatBool(b1)
    fmt.Printf("%T, %s\n", ss1, ss1)

    //str转int
    s2 := "100"
    //参数:10:代表转换的进制,64:最大位数
    i2, err := strconv.ParseInt(s2, 10, 64)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T, %d\n", i2, i2)

    //int转str
    ss2 := strconv.FormatInt(i2, 10)
    fmt.Printf("%T, %s\n", ss2, ss2)

    //iota(), atoi()
    i3, err := strconv.Atoi("100")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T, %d\n", i3, i3)

    ss3 := strconv.Itoa(i3)
    fmt.Printf("%T, %s\n", ss3, ss3)

    //同理还有float类型,省略
    f1, err := strconv.ParseFloat("3.14", 10)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T, %f\n", f1, f1)
    
    ss4 := strconv.FormatFloat(f1, 'f', 3, 64)
    fmt.Printf("%T, %s\n", ss4, ss4)

其他同理

小结

掌握go的基本数据类型转换,然后再熟练使用strconv包中的方法,这样对于常见的数字、布尔、字符串之间的转换就不再需要查询API了