第二章 变量、常量和数据类型 (3)

总结:var 声明变量,const声明常量。声明时可以带类型。也可以不带类型,通过右推断。

2.3 数据类型

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。

基本数据类型:数值、字符串和布尔型。

复合数据类型:数组和结构体。

引用类型:指针、切片、字典、函数和通道。

接口类型。

2.3.1 整数

1 整数类型

Go语言的数值类型包含了几种不同长度的整数、浮点数和复数。每种数值类型都决定了对应的取值范围和是否支持正负号。

 

类型

 

长度(字节)

 

取值范围

 

int8

 

1

 

(0~255)

 

uint8

 

1

 

(-128~127)

 

int16

 

2

 

(0~65535)

 

uint16

 

2

 

(-32768~32767)

 

int32

 

4

 

(-2147483648~2147483647)

 

uint32

 

4

 

(0~4294967295)

 

int64

 

8

 

(-9223372036854775808~9223372036854775807)

 

uint64

 

8

 

(0~18446744073709551615)

 

int

 

48

 

与机器字长和编译器都有关系

 

uint

 

48

 

与机器字长和编译器都有关系

 

uintptr

 

48

 

32平台4个字节,64位平台8个字节,底层编程才需要

 

byte

 

1

 

uint8等价,通常表示一个unicode字符编码

 

rune

 

4

 

int32等价,一般强调是一个原始数据而不是一个小整数。在一个字符串中,表示一个字符对应utf8的码点。

 

 

2 运算符

Go语言提供了丰富的内置运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符和其它运算符等。

算术运算符:

运算符

 

描述

 

+

 

 

-

 

 

*

 

 

/

 

 

%

 

模运算(求余数)

 

++

 

自增

 

--

 

自减

 

 

Go语言中,%取模运算符的符号和被取模的符号总是一致的,因此5%35%-3的结果都是2。除法运算符的结果则依赖于操作数是否全为整数,例如5.0/4.0的结果是1.25,但是7/4的结果为1,去掉小数部分,而不是四舍五入。

关系(比较)运算符:

两个相同的整数类型可以使用下面的二元关系运算符进行比较,比较表达式的结果是布尔类型。

运算符

 

描述

 

==

 

相等

 

!=

 

不等

 

<

 

小于

 

<=

 

小于或等于

 

>

 

大于

 

>=

 

大于或等于

 

 

 

逻辑运算

运算符

 

描述

 

!

 

 

&&

 

 

||

 

 

 

位运算:

4个操作运算符并不区分是有符号还是无符号数:

运算符

 

描述

 

&

 

位与and (左侧和右侧都为1,则为1;否则为0)

 

|

 

位或 or(左侧或右侧只要有一个为1,结果为1;都为0结果才为0)

 

^

 

位异或 xor (相同为0,不同为1)

 

&^

 

位清空and not(右侧是0,左侧数不变;右侧是1,则左侧数清零)

 

<<

 

左移

 

>>

 

右移

 

位运算的例子:

X=2,y=15

 

二进制结果

 

十进制结果

 

0000 0010 & 0000 1111

 

0000 0010

 

 2

 

0000 0010 | 0000 1111

 

0000 1111

 

15

 

0000 0010 ^ 0000 1111

 

0000 1101

 

13

 

0000 0010 &^ 0000 1111

 

0000 0000

 

0

 

0000 0010<<3  

 

0001 0000

 

16

 

0000 0010>>1

 

0000 0001

 

1

 

 

运算符优先级:

 

 

2.3.2 浮点数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsfxs.html