zoukankan      html  css  js  c++  java
  • Go语言趣学指南-lesson7

    整数

    本章学习目标

    1、学会使用10种不同的整数类型

    2、学会选择合适的类型

    3、学会使用十六进制表示和二进制表示

    Go语言里的整数类型

    • Go提供10种不同类型的整数,它们都称为整数类型(integer)
      • 不可以存小数部分
      • 范围有限
      • 通常根据数值范围来选取整数类型
    • 5种整数类型是有符号的
      • 能表示正数、0、负数
    • 5种整数类型是无符号的
      • 能表示正数和0
    • 比较常用的整数类型有int和无符号的uint

    8种整数类型取值范围

    整数类型、包括有符号和无符号的、实际上一共8种类型,它们取值范围各不相同、和架构无关

    • int8: -128 ~ 127
    • int16: -32768 ~ 32767
    • int32: -2147483648 ~ 2147483647
    • int64: -9223372036854775808 ~ 9223372036854775807
    • uint8: 0 ~ 255
    • uint16: 0 ~ 65535
    • uint32: 0 ~ 4294967295
    • uint64: 0 ~ 18446744073709551615

    int和uint

    • int和uint是针对目标设备优化的类型:
      • 在比较老的设备上int和uint都是32位,而在新设备上都是64位
    • 虽然在某些设备上int可以当成int32,但是在有些设备上也可以当成int64,其实他们三个是不同的类型。
    • int并不是其他类型的别名

    打印数据类型

    在Printf里使用%T可以打印出数据的类型

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	year := 2020
    	fmt.Printf("Type %T for %v
    ", year, year)
    	a := "text"
    	fmt.Printf("Type %T for %[1]v
    ", a) //为避免重复使用同一个变量两次,可以利用[1]来重复第一个格式化变量
    	b := 42
    	fmt.Printf("Type %T for %[1]v
    ", b)
    	c := 3.14
    	fmt.Printf("Type %T for %[1]v
    ", c)
    	d := true
    	fmt.Printf("Type %T for %[1]v
    ", d)
    }
    
    
    执行结果:
    
    Type int for 2020
    Type string for text
    Type int for 42
    Type float64 for 3.14
    Type bool for true
    

    uint8

    • uint8 可以用来表示8位的颜色(红绿蓝:0-255)
    • 为什么不用int表示8位颜色呢?
      • uint8的取值范围正好合适255,而int则多出来几十亿不合理

    十六进制表示法

    • Go 语言中,在数的前面加上0x前缀表示可以用十六进制的形式表示数值

    • 打印十六进制的数,使用%x格式化动词

    • 同样也能指定宽度和填充

      var red, green, blue uint8 = 0, 141, 213
      fmt.Printf("color: #%02x%02x%02x;", red, green, blue)
      

    整数环绕

    所有的整数类型都有一个取值范围,超过这个范围,就会发生“环绕”。如何避免?咋需要选择取值范围大的类型了。

  • 相关阅读:
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践
    UVA10071 Back to High School Physics
    UVA10071 Back to High School Physics
    UVA10055 Hashmat the Brave Warrior
    UVA10055 Hashmat the Brave Warrior
    UVA458 The Decoder
    UVA458 The Decoder
    HDU2054 A == B ?
    HDU2054 A == B ?
    POJ3414 Pots
  • 原文地址:https://www.cnblogs.com/walker1024/p/14176638.html
Copyright © 2011-2022 走看看