1.Go语言基础语法
a.关键字
var和const:变量和常量的声明
package and import:导入
func:用于定义函数和方法
return:用于从函数返回
defer someCode:在函数退出之前执行
go:用于并行
select:用于选择不同类型的通讯
interface:用于定义接口
struct:用于定义抽象数据类型
break、case、continue、for、fallthrough、else、if、switch、goto、default流程控制
chan用于channel通讯
type用于声明自定义类型
map用于声明自定义类型
range用于读取slice,map, channel数据
b.变量
1.结构
var <name> <type>=<value>
c.常量
1.结构
const <name> <type>=<value>
2.Go运算符
a.算术与赋值运算符
1,算术运算符
a.结构
变量3:=变量1+变量2
算术运算符是对数值类型的变量进行运算的,比如:加减乘除。
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
++ | 自增 |
– | 自减 |
b.赋值运算符分析
1.结构
变量 运算符 值
赋值一览表:赋值运算符就是将某个运算后的值,赋给指定的变量。
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
^= | 按位异或后赋值 |
|= | 按位或后赋值 |
c.关系与逻辑运算符
1.关系运算符(比较运算符)
1.结构
变量 比较运算符 变量
2.解析:关系运算符也叫比较运算符,在Go语言中,关系运算符的结果都是bool型,也就是运算的结果要么是ture,要么是false,而通过关系运算符形成的关系表达式经常用在if结构的条件中或循环结构的条件中。
关系运算符一览:
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
2.逻辑运算符
1.结构
变量 逻辑运算符 变量
2.解析:逻辑运算符用于连接多个条件(条件一般为关系表达式),最终的结果也是一个bool值。而在此结构中逻辑运算符&&也叫短路与,它代表的是如果第一个条件为false,则第二个条件不会判断,最终结果为false.与之对应的还有一个逻辑运算符||如果第一个条件为true,则第二个条件不会进行判断,最终结果为true.
关系运算符一览:
运算符 | 描述 |
---|---|
&& | 逻辑AND运算符,如果两边的操作数都是True,则条件为true,否则为false |
|| | 逻辑OR运算符,如果两边的操作数都是True,则条件为true,否则为false |
! | 逻辑NOT运算符,如果条件为True,则逻辑not条件为false,否则为true |
d.运算符优先级
Go语言运算符优先级和结合性一览表:
优先级 | 分类 | 运算符 | 结合性 |
---|---|---|---|
1 | 逗号运算符 | , | 从左到右 |
2 | 赋值运算符 | =、+=、-=、*=、/=、 %=、 >=、 <<=、&=、^=、|= | 从右到左 |
3 | 逻辑或 | || | 从左到右 |
4 | 逻辑与 | && | 从左到右 |
5 | 按位或 | | | 从左到右 |
6 | 按位异或 | ^ | 从左到右 |
7 | 按位与 | & | 从左到右 |
8 | 相等/不等 | ==、!= | 从左到右 |
9 | 关系运算符 | <、<=、>、>= | 从左到右 |
10 | 位移运算符 | <<、>> | 从左到右 |
11 | 加法/减法 | +、- | 从左到右 |
12 | 乘法/除法/取余 | *(乘号)、/、% | 从左到右 |
13 | 单目运算符 | !、*(指针)、& 、++、–、+(正号)、-(负号) | 从右到左 |
14 | 后缀运算符 | ( )、[ ]、-> | 从左到右 |
**释义:**有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。只有单目运算,赋值运算是从右往左运算的。
3.基础数据类型
a.布尔类型
1.结构
var 标识符 bool=true(false)
解析:布尔类型的数据声明关键字为bool,且布尔数据类型可取值一般只有两种true和false两种,当数据类型取值为true时,则代表为真,表示成立,二进制时则表示1为真,当数据类型取值为false,则代表为假,表示不成立,二进制时则表示0为假。
b.整型类型
1.结构
var 标识符 int=<value>
解析:整型是所有编程语言里最基础的数据类型。且需要注意的是整数类型的声明,都是按照Go的声明规则进行声明,需要注意的是,不同大小的整型类型是不能直接比较,不能直接运算,如果需要对两个不同类型的值执行运算操作,需要进行类型转换。
整数基础类型一览:
类型 | 长度(单位:字节) | 说明 | 值范围 | 默认值 |
---|---|---|---|---|
int | 1 | 带符号8位整型 | -128~127 | 0 |
uint8 | 1 | 无符号8位整型,与 byte 类型等价 | 0~255 | 0 |
int16 | 2 | 带符号16位整型 | -32768~32767 | 0 |
uint16 | 2 | 无符号16位整型 | 0~65535 | 0 |
int32 | 4 | 带符号32位整型,与 rune 类型等价 | -2147483648~2147483647 | 0 |
uint32 | 4 | 无符号32位整型 | 0~4294967295 | 0 |
int64 | 8 | 带符号64位整型 | -9223372036854775808~9223372036854775807 | 0 |
uint64 | 8 | 无符号64位整型 | 0~18446744073709551615 | 0 |
int | 32位或64位 | 与具体平台相关 | 与具体平台相关 | 0 |
uint | 32位或64位 | 与具体平台相关 | 与具体平台相关 | 0 |
uintptr | 与对应指针相同 | 无符号整型,足以存储指针值的未解释位 | 32位平台下为4字节,64位平台下为8字节 | 0 |
c.字符串类型
1.结构
var 标识符 string = "<value>"
2.解析:Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样。Go 语言里的字符串的内部实现使用UTF-8编码。字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符。另外字符串是一种值类型,且值不可变,即创建某个文本后将无法再次修改这个文本的内容,更深入地讲,字符串是字节的定长数组。
d.浮点类型
1.结构
var 标识符 float32= 赋值
2.解析:Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。,且在Go语言中的默认声明为float64类型,浮点数在机器中存放时主要分成三部分存储,分别为符号位,指数位,尾数位,而在具体的存储过程中精度会有丢失。这些浮点数类型的取值范围可以从很微小到很巨大。浮点数的范围极限值可以在math包找到。常量 math.MaxFloat32表示float32能表示的最大数值,大约是 3.403e38;对应的math.MaxFloat64常量大约是 1.798e308。它们分别能表示的最小值近似为 -3.403e38和 -1.798e308。
序号 | 类型 | 长度 |
---|---|---|
1 | float32 | 1.401298464324817e-45~3.4028234663852886e+38 |
2 | float64 | 5e-324~1.7976931348623157e+308 |
e.字符类型
1.结构
var 标识符 byte(rune)=赋值
2.解析:Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。go里面没有字符类型(char),而是使用byte(uint8)和rune(int32)来代表字符。声明一个字符时,默认是rune类型,除非特别定义。 一个string变量既可以被拆分为字符,也可以被拆分为字节;前者使用rune[]切片表示,后者使用byte[]切片表示。