GO语言基础语法|青训营笔记
基础语法
关键词
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
数据类型
整形
| 类型 | 描述 |
|---|---|
| int | 32位操作系统上就是int32,64位操作系统上就是int64 |
| uint8 | 无符号 8位整型 (0 到 255) |
| uint16 | 无符号 16位整型 (0 到 65535) |
| uint32 | 无符号 32位整型 (0 到 4294967295) |
| uint64 | 无符号 64位整型 (0 到 18446744073709551615) |
| int8 | 有符号 8位整型 (-128 到 127) |
| int16 | 有符号 16位整型 (-32768 到 32767) |
| int32 | 有符号 32位整型 (-2147483648 到 2147483647) |
| int64 | 有符号 64位整型 (-9223372036854775808 到 9223372036854775807) |
| uint | 32位操作系统上就是uint32,64位操作系统上就是uint64 |
| uintptr | 无符号整型,用于存放一个指针 |
浮点型
类型float32 float64
复数
var c1 complex64
c1 = 1 + 2i
布尔值
布尔类型变量的默认值为false。 Go 语言中不允许将整型强制转换为布尔型. 布尔型无法参与数值运算,也无法与其他类型进行转换
字符串
str1:="hello world"
字符串方法
| 方法 | 介绍 |
|---|---|
| len(str) | 求长度 |
| +或fmt.Sprintf | 拼接字符串 |
| strings.Split | 分割 |
运算符
单目运算符 > 算术 > 位移 > 关系 > 位 > 逻辑 > 赋值
算数运算符
| 运算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相减 |
| * | 相乘 |
| / | 相除 |
| % | 求余 |
关系运算符
| 运算符 | 描述 |
|---|---|
| == | 检查两个值是否相等,如果相等返回 True 否则返回 False。 |
| != | 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
| 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 | |
| >= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
| < | 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
| <= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
逻辑运算符
| 运算符 | 描述 | ||
|---|---|---|---|
| && | 逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 | ||
| 逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 | |||
| ! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
位运算符
| 运算符 | 描述 | |
|---|---|---|
| & | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) | |
| 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) | ||
| 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) | ||
| << | 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 | |
| >> | 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。 |
赋值运算符
| 运算符 | 描述 | |
|---|---|---|
| = | 简单的赋值运算符,将一个表达式的值赋给一个左值 | |
| += | 相加后再赋值 | |
| -= | 相减后再赋值 | |
| *= | 相乘后再赋值 | |
| /= | 相除后再赋值 | |
| %= | 求余后再赋值 | |
| <<= | 左移后赋值 | |
| >>= | 右移后赋值 | |
| &= | 按位与后赋值 | |
| = | 按位或后赋值 | |
| ^= | 按位异或后赋值 |
流程控制
if—else
if 表达式1 {
分支1
} else if 表达式2 {
分支2
} else{
分支3
}
for
for 初始语句;条件表达式;结束语句{
循环体语句
}
switch case
Go语言规定每个switch只能有一个default分支。
一个分支可以有多个值,多个case值中间使用英文逗号分隔。
数组定义
var name [num] T
var a [3]int
var b [4]string
数组初始化
var testArray [3]int//数组会初始化为int类型的零值
var numArray = [3]int{1, 2}//使用指定的初始值完成初始化
var cityArray = [3]string{"aaa", "bbb", "ccc"} //使用指定的初始值完成初始化
切片 slice
定义
var name []T
var a []string//声明一个字符串切片
var b = []int{}//声明一个整型切片并初始化
使用make函数构造切片
mysli:=make([]T, size, cap)