本文内容纲要:

- 0. 基本数据类型比较

- 1. 布尔类型

- 2. 数字类型

- 2.1 整形和浮点型

- 2.2 复数

- 2.3 位运算

- 2.4 运算符

- 3. 字符类型

0. 基本数据类型比较

  1. 两个类型相同的值可以使用相等 == 或者不等 != 运算符来进行比较并获得一个布尔型的值;

  2. 如果值的类型是接口(interface),它们也必须都实现了相同的接口;

  3. 如果其中一个值是常量,那么另外一个值的类型必须和该常量类型相兼容的

1. 布尔类型

  布尔型的值只可以是常量 true 或者 false;

!&&||

  短路特性:

    && 和 || 是具有快捷性质的运算符,当运算符左边表达式的值已经能够决定整个表达式的值的时候,运算符右边的表达式将不会被执行

2. 数字类型

2.1 整形和浮点型

  Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码;

  基于架构的类型,例如:int、uint 和 uintptr,没有 float类型(只有 float32 和 float64),没有 double 类型;

  intuint
  uintptr

  与操作系统架构无关的类型都有固定的大小:如 int8,int16,int32,int64,uint8,uint16,uint32,uint64,float32,float64

  math包中的函数接收的数据类型均为 float64

a := uint64(0)

  前缀0表示8进制数,前缀0x表示16进制数,e表示10的联乘

2.2 复数

reim
var re complex128 = 1 + 2i
  
    // 获取实数部分
    real := real(re)
    // 获取虚数部分
    Imaginary := imag(re)
    fmt.Println("real number:", real,"Imaginary number:", Imaginary)
    // 格式化输出
    fmt.Printf("re:%v\n",re)
    // 实数或虚数为浮点型是可通过complex生成实数
    var re2 = complex(2, 3)
    fmt.Println(re2)

2.3 位运算

  位运算只能用于整数类型的变量,且需当它们拥有等长位模式时;

  %b是用于表示位的格式化标识符;

  & :都是1,则为1,否则为0

   | :有一个为1则为1

  ^ :相同为0,不同为1

  &^ :位清除,将 n 转换为2进制后,n 值为1的位置 s 对应为 0,s 剩余位置的值 为 m 对应位置的值

var n = 12    // 1100
    var m = 13    // 1101
    s := m &^ n
    fmt.Printf("%b\n",s)    // 输出 1

  << :位左移,2 << 1,将2左移1位

  >> :位右移,2 >> 1,将2右移1位

2.4 运算符

  由上至下代表优先级由高到低

  ^ !

  / * % << >> & &^

  + - | ^

  == != < <= >= >

  <-

  &&

  ||

2.4.1 位运算符

  &、 |、 ^、 &^

2.4.2 逻辑运算符

  ==、 !=、 <、 <=、 > 、 >= 、&& 、||

2.4.3 算数运算符

  用于整数和浮点型:+、-、*、/、%

  a = b + c,可简写为 a+=b,改写法也适用于 -=、*=、/=、%=

  整数除以0可能导致程序崩溃,浮点数除以0.0会返回一个无穷尽结果,用 +Inf 表示

3. 字符类型

byteuint8var ch byte = 'A'

本文内容总结:0. 基本数据类型比较,1. 布尔类型,2. 数字类型,2.1 整形和浮点型,2.2 复数,2.3 位运算,2.4 运算符,3. 字符类型,