1 基本语法
-
Go程序由多个标记组成:关键字,标识符,常量,字符串,符号
- 如:fmt.Println("Hello, world!")
-
行分隔符:一行结束代表一个语句结束,不需要;结尾
-
注释:单行注释 // 内容 块注释 /* 内容 */
-
标识符:用来命名变量、类型等程序实体, 由一个或对这个字母数字下划线组成的序列,第一个字符必须是字母或者下划线,不能是数字或者关键字
-
字符串连接 :使用 + 连接
-
格式化字符串:fmt.Sprintf 格式化字符串并赋值给新串,%d 代表整型数字,%s表示字符串
2 语言数据类型
1. 布尔型:true、false
2. 数字类型(uint8、uint16、uint32、uint64、int8、int16、int32、int64、float32、float64、complex64、complex128、byte、rune、uint、int、uintptr)
3. 字符串类型:字符串字节使用UTF-8编码标识Unicode文本
4. 派生类型:(指针Pointer、数字、结构化struct、Channel、函数、切片、接口interface、Map)
3 语言变量
-
变量声明:
- 指定变量声明: var a int
- 根据值自行判定变量类型 var a = 1
- 省略var, a :=1 (a必须是一个未声明过的新变量)
-
多变量声明: var a, b, c = 1, 2, 3 或者 a, b, c := 1, 2, 3
-
声明全局变量
var (
a int
b bool
)
4 常量
- 常量的定义格式:
- const a string = 'a'
- const a = 'a'
- const a, b = 1, 2
- 特殊常量:iota,可以被编辑器修改的常量
- 在const关键字出现时,将被重置为0(const内部的第一行之前),const每新增一行常量声明将使iota家属一次(可以理解为是const语句块的行所以)
5 运算符
- 算数运算符: + 、-、*、/、%、++、--
- 关系运算符:==、!=、>、<、>=、<=
- 逻辑运算符:&&、||、!
- 位运算符:&、 |、 ^
- 赋值运算符:=、+=、-=、*=、/=、%=、<<=、 >>=、 &=、 ^=、 |=
- 其他运算符:&(返回变量存储地址)、*(指针变量)
6 循环语句
-
条件语句:if、switch、select
if a > 1 { ... } else { ... } switch a { case 10: ... case 20: ... default: ...; }
- 循环类型:for循环
for init;condition;post{}
for condition { }
for { }
- 循环控制:break、continue、goto
7 函数
-
定义:
fun function_name (a, b, c) return_types {
}
return_types: string 或者 (string, string)
-
调用:function_name (a, b ,c int)
-
函数返回值:可以是单个、也可以是多个值
- return a
- return a, b
8 数组
-
声明数组:
1. var a [3] float32 (含义:定义数组a长度为3,类型为float32) 2. var a = [3]float32{1, 2, 3} 3. a := [3]float32{1, 2, 3} 4. a := [...]float32{1, 2, 3} (不确定数组长度使用...) 5. a := [5]float32{1:2.0,3:7.0} (1,3元素初始化)
-
二维数组
a := [2][3] int { {0, 1, 2}, {3, 4, 5}, }
9 指针
- 声明指针:var a *int
- 使用:
var b *int
var a int = 20
b = &a
- 空指针:当指针被定义但未分配给任何变量是。它的值未为nil,nil指针被称为空指针
- 一个指针变量通常缩写未ptr
- 空指针判断: ptr == nil
10 结构体
1. 含义:数组可以存储统一类型的数据,结构体可以为不同项定义不同的数据类型;它是有一系列具有相同类型或者不同类型的数据构成的数据集合
2. 使用
定义结构体:
type struct_variable_type struct {
member definition
member definition
}
变量声明语法:
variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
访问:
structure_variable_type.key1
- 结构体作为函数参数
网友评论