↑↓ 选择 · ↵ 打开 · 共索引 377 篇

    Golang开发之类型转换

    Golang 类型转换

    ARCHIVE 这篇写于 2016 年,距今 10 年多了。里面的版本、链接和做法可能都已经过时,看的时候留个心眼。

    相信大家对于开发过程中的类型转换都不陌生吧,今天主要讲一下不同语言的类型转换,主要是Java,Ruby,Golang。

    常见的类型转换,应该是 string(字符串) 转换成 int(整型),或者 int (整型)转换成 string (字符串)。

    Ruby

    "123".to_i
    123.to_s
    

    Golang

    i, err := strconv.Atoi("123")
    s := strconv.Itoa(123)
    

    Java

    int i = Integer.parseInt("123")
    String s = Integer.toString(123)
    

    以上都很简单,更深的用法,我也不再多说了,比方说int32 int64等等。

    接下来重点把在实际开发中遇到的一个问题讲一下,

    Golang

    var temp int64 = 5201314 fmt.Printf("string=%s", string(temp))

    我们的初衷是想得到 string=5201314,实际得到的结果是 string=�

    demo改为

    var temp int64 = 97 fmt.Printf("string=%s", string(temp))

    得到的结果是 string=a,相信大家应该知道string的用法了吧。

    原因参见

    在Golang语言中,有几个需要大家注意的,type assertion Assignability

    golang: 类型转换和类型断言

    上面文中,重点提一下Comma-ok断言

    Comma-ok断言

    Comma-ok断言的语法是:value, ok := element.(T)。element必须是接口类型的变量,T是普通类型。如果断言失败,ok为false,否则ok为true并且value为变量的值

    Comma-ok断言还支持另一种简化使用的方式:value:=element.(T),但是不推荐这样做,因为一旦element.(T)断言失败,则会产生运行时错误。

    所以,大家在字符串和数字相互转换时要注意正确的用法。