• <2>Golang基础进阶——基本数据类型


    Golang:基本数据类型

    1. 整型

    整型分为两大类:

    • 按长度分为:int8,、int16、int32、int64
    • 还有对应的无符号整型:uint8、uint16、uint32、uint64

    其中,uint8就是我们熟知的byte型,int16对应C语言的short型,int64对应C语言的long型。

    1.1.  自动匹配平台的int uint

    func main() {
    var v1 int32
    v1 = 123
    v2 := 64

    fmt.Println(reflect.TypeOf(v1))
    fmt.Println(reflect.TypeOf(v2))
    // 输出结果为:
    // int32
    // int
    }

     

    2. 浮点型

    Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE754标准。

    float32的浮点数的最大范围约为3.4e38,可以使用常量定义: math.MaxFloat32 。

    float64的浮点数的最大范围约为1.8e308,可以使用一个常量定义 math.MaxFloat64 。

    func main() {
    var f1 float32
    f1 = 12
    fmt.Println(f1)

    f2 := 12.555
    fmt.Println(reflect.TypeOf(f2))
    fmt.Println(f2)
    // 输出结果:
    // 12
    // float64
    fmt.Printf("%f ", f2)
    fmt.Printf("%.2f ", f2)
    // 输出结果:
    // 12.555000
    // 12.55
    }

    注意:float和int不能进行计算,需要强制转换过后才行。

    3. 布尔型

    布尔型数据在Go语言中以bool 类型进行声明,布尔型数据只有true(真)和 false(假)两个值。

    Go语言中不允许将布尔型强制转换为整型,代码如下:

    func main() {
    var n bool

    fmt.Println(int(n) * 2)

    // cannot convert n (type bool) to type int
    }

    布尔型无法参与数值运算,也无法与其他类型进行转换。

    func main() {
    var v1 bool
    v1 = true
    fmt.Println(v1)

    v2 := (1 == 2)
    fmt.Println(reflect.TypeOf(v2))

    v3 := !v2
    fmt.Println(v3)
    // 输出结果:
    // true
    // bool
    // true
    }

    4. 字符

    字符串中的每一个元素叫做“字符”。在遍历或者单个获取字符串元素元素时可以获得字符。
    Go语言的字符有以下两种:

    • 一种是uint8类型,或者叫byte型,代表了ASCII码的一个字符。
    • 另一种是rune类型,代表一个UTF-8字符,档处理中文、日文或者其他符合字符时,则需要用到rune类型。rune类型实际是一个int32。

    使用 fmt.Printf 中的动词可以输出变量的实际类型,使用这个方法可查看byte和rune的本来类型,代码如下:

    func main() {
    var a byte = 'a'
    fmt.Printf("%d %T ", a, a)
    // 输出结果:
    // 97 uint8

    var b rune = ''
    fmt.Printf("%d %T ", b, b)
    // 输出结果:
    // 20320 int32
    }
    func main() {
    var ch byte
    ch = 'a'

    fmt.Printf("ch = %c ", ch)
    fmt.Println(reflect.TypeOf(ch))
    // 输出结果:
    // ch = a
    // uint8
    }

    可以发现,byte类型的,实际类型是uint8,其值为'a',对应的ASCII编码为97。rune 类型的b变量的实际类型是int32,对应的Unicode码就是20320。
    Go使用了特殊的rune类型来处Unicode,让基于Unicode的文本处理更为方便,也可以使用byte型进行默认字符串处理,性能和扩展性都有照顾。

    加油,你们是最棒的!
  • 相关阅读:
    Mechanism of Loading Resources
    Dashboards (Android)
    Tips: compilation and creating new projects on Android 4.0
    设备方向
    【转】字符串分割(C++)
    Moving From Objective-C to C++
    Simulate android behaviors on win32
    【ybtoj高效进阶 21265】排队问题(fhq-Treap)(构造)
    【ybtoj高效进阶 21262】头文字 D(线段树)(数学)
    【ybtoj高效进阶 21261】头文字 C(单调队列优化DP)
  • 原文地址:https://www.cnblogs.com/Wshile/p/12660531.html
Copyright © 2020-2023  润新知