变量
go
1 | var a int |
常量
go
1 | const PI = 3.1415926 |
iota
Go中借助iota来实现枚举
go
1 | const ( |
- iota在const关键字出现时将被重置为0
- const中每新增一行常量声明将使iota累加一次
- const声明的常量后面没有内容默认就跟上一行一致
基本数据类型
String
使用双引号表示字符串 "hello"
使用单引号表示字符 'h'
字符串的常用方法
整型
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64
int是特殊的,会根据你的操作系统的位数来决定是int32还是int64
浮点型
float32 flot64
浮点数永远都是不精确.
- 转换成字符串去做运算
- 整体放大多少倍转换成整数进行运算
复数
complex64和complex128
布尔
var a bool//默认是false
var b = true
Go语言中布尔类型不能和其他类型做类型转换
byte和rune
英文字符用byte(ASCII码能表示的) 01010101
rune(中文,UTF8编码) 01010101 01010101 01010101
流程控制语句
IF语句
go
1 | age := 20 |
for语句
go
1 | //标准for循环 |
switch和case
go
1 | n := 10 |
fallthrough
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。
go
1 | switch { |
输出结果:
The integer was <= 5
The integer was <= 6
The integer was <= 7
The integer was <= 8
fallthrough不能用在switch的最后一个分支。
运算符
Go 语言内置的运算符有:
以下假设A = 60 , B = 13 ,A的8位二进制:00111100 ,B的8位二进制:00001101
按位与运算符&:
A: 0 0 1 1 1 1 0 0
B: 0 0 0 0 1 1 0 1
A&B: 0 0 0 0 1 1 0 0
对应位比较,如果都为1,那么按位与的结果为1,否则为0
按位或运算符|:
A: 0 0 1 1 1 1 0 0
B: 0 0 0 0 1 1 0 1
A|B: 0 0 1 1 1 1 0 1
对应位比较,只要有一个为1,那么按位或的结果为1,否则为0
按位异或运算符^:
A: 0 0 1 1 1 1 0 0
B: 0 0 0 0 1 1 0 1
A^B: 0 0 1 1 0 0 0 1
对应位比较,只要不相同就为1,否则为0
左移运算符<<
A: 0 0 1 1 1 1 0 0
A<<2: 1 1 1 1 0 0 0 0
A<<3: 1 1 1 0 0 0 0 0
各二进位全部左移n位,超出总位数就丢弃
在不丢弃的情况下,相当于10进制上乘以了2的n次方
右移运算符>>
A: 0 0 1 1 1 1 0 0
A>>2: 0 0 0 0 1 1 1 1
A>>3: 0 0 0 0 0 1 1 1
各二进位全部右移n位,超出范围就丢弃
在不丢弃的情况下,相当于10进制上除以了2的n次方