GO语言学习知识梳理
go具有高性能高并发,语法简单学习曲线平缓的特点,丰富的标准库,完善的工具链,静态链接,快速编译等优点。
基础语法:
1. var
var a = "initial" 字符串
var b, c int = 1, 2 int值
var d = true 布尔
var e float64 double值
a:=3 给a赋值
2. for
for 起始值,终止条件,数值处理{代码}
- continue 继续循环
- break 跳出循环
- 如果没有相关条件,会成为死循环,一直进行
- goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
示例代码如下:
var a int = 0
LOOP: for a<5 {
if a == 2 {
a = a+1
goto LOOP
}
fmt.Printf("%d\n", a)
a++
}
3.if
- if布尔表达式{语句}
可以在条件判断之前,进行变量赋值,例: if num := 9; num < 0 {}
- if-else语句
if 布尔表达式 { /* 在布尔表达式为 true 时执行 /} else { / 在布尔表达式为 false 时执行 */}
4.switch
其中的变量v可以是任何类型,val1和val2可以是同类型的任意值,类型不局限为常量或者整数,或者最终结果为相同类型的表达式
列:
switch v {
case val1:
...
case val2:
...
default:
...
}
5. 数组
和c语言相同,Go语言也提供了数组类型的数据结构,数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
- 声明数组
Go 语言数组声明需要指定元素类型及元素个数,语法格式:var variable_name [SIZE] variable_type
- 初始化数组
直接进行初始化:var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
通过字面量在声明数组的同时快速初始化数组:balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
数组长度不确定,编译器通过元素个数自行推断数组长度,在[ ]中填入...,举例如下:var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}和balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
数组长度确定,指定下标进行部分初始化:balanced := [5]float32(1:2.0, 3:7.0)
- 数组名意义
在c语言中我们知道数组名在本质上是数组中第一个元素的地址,而在go语言中,数组名仅仅表示整个数组,是一个完整的值,一个数组变量即是表示整个数组。
5. 结构体
在结构体中就可以定义多个不同的数据类型,在声明结构体之前我们首先需要定义一个结构体类型,这需要使用type和struct,type用于设定结构体的名称,struct用于定义一个新的数据类型。
type struct_variable_type struct {
member definition
member definition
...
member definition
}
如果要访问结构体成员,需要使用点号 . 操作符,格式为:结构体变量名.成员名