go:基本数据类型

0. 基本数据类型比较

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

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

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

1. 布尔类型

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

  布尔型的常量和变量也可以通过和逻辑运算符(非 !、和 &&、或 ||)结合来产生另外一个布尔值

  短路特性:

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

2. 数字类型

2.1 整形和浮点型

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

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

  int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。

  uintptr 的长度被设定为足够存放一个指针即可。

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

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

  你可以使用 a := uint64(0) 来同时完成类型转换和赋值操作,这样 a 的类型就是 uint64

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

2.2 复数

  复数使用 re + iml 来表示,其中 re 代表实数部分,im 代表虚数部分,I 代表根号负 1。

    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. 字符类型

  字符只是整数的特殊用例。byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题。例如:var ch byte = 'A';字符使用单引号括起来

猜你喜欢

转载自www.cnblogs.com/virgosnail/p/12912231.html