Go语言基础
- Go语言基础结构
- 包声明: 必须在源文件非注释的第一行声明文件所属的包
- 引入包: import " " 在引号中输入需要引用的包
- 函数: 使用形如func main() 的语法来定义函数, 同时每个可执行文件必须包含一个main函数, 一般来说main()是启动后第一个执行的函数(如果有into()函数则会先执行该函数)
- 变量: 函数内定义为局部变量, 函数外定义为全局变量, 函数定义为形式变量
- 语句&表达式
- 注释: 注释风格与c相同, //用来行注释, /* */用来块注释
- 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 |
- Go语言数据类型
1 | 布尔型 | 只能是常量true或false |
2 | 数字类型 | 整形int或浮点数float GO支持整形和浮点数型数字,并且原生支持复数,其中位运算采用补码 |
3 | 字符串类型 | Go的字符串是由单个字节连接起来的,字节使用UTF-8编码标识的Unicode文本 |
4 | 派生类型 |
|
- Go语言变量
var identifier type
- 变量声明
- 指定变量类型,若声明后不指定则使用默认值
var v_name v_tpye
v_name = value
- 根据值自动判定变量类型
var v_name = value
- 省略var,注意:=左侧的变量必须是未声明过得
v_name := value
//例如
var a int = 10
var b = 10
C := 10
- 多变量声明
//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误
// 这种因式分解关键字的写法一般用于声明全局变量
var (
vname1 v_type1
vname2 v_type2
)
- 赋值
多变量在同一行进行赋值
a, b, c = 5, 7, "abc"
多变量在同一行进行定义
c, d, d = 5, 7, "abc"
- Go语言常量
- 常量的定义格式
const identifier [typr] = value
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
- iota特殊常量
特殊常量,在每一个const关键字出现的时候,被重置为0,然后再在一个const出现之前,每一次出现iota,其所代表的数字都会加1
const (
a = iota
b
c
)
- Go语言运算符
- 算数运算符
+ | - | * | / | % | ++ | -- |
- 关系运算符
== | != | > | < | >= | <= |
- 逻辑运算符
&& | || | ! |
- 位运算符
& | 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 | (A & B) 结果为 12, 二进制为 0000 1100 |
| | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 | (A | B) 结果为 61, 二进制为 0011 1101 |
^ | 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 | (A ^ B) 结果为 49, 二进制为 0011 0001 |
<< | 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | A << 2 结果为 240 ,二进制为 1111 0000 |
>> | 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 | A >> 2 结果为 15 ,二进制为 0000 1111 |
- 赋值运算符
= | += | -= | /= | %= |
<<= | >>= | &= | ^= | |= |
- 其它运算符
& | 返回变量地址 |
* | 指针变量 |
- 运算符优先级
7 | ^ ! |
6 | * / % << >> & &^ |
5 | + - | ^ |
4 | == != < <= >= > |
3 | <- |
2 | && |
1 | || |
- 类型转换
Go语言类型转换的基本格式如下
tpye_name(expression)
tpye_neme为类型, expression为表达式
例如:
var sum int = 17
float32(sum)