go语言学习(四)
一、指针
- 、基本介绍:基本数据类型,变量存的就是值,也叫值类型。
- 、获取变量的地址,用&,比如:var num int,获取num的地址:&num。
- 、指针类型,变量存的是一个地址,这个地址指向的空间才是值,如:var p *int=&num。
- 、获取指针类型所指向的值,用*,如:var *ptr int,使用*ptr获取P所指向的值。
案例演示:
5、指针细节说明:
- 值类型都有对应的的指针类型,形式为*数据类型,如int对应的指针就是*int;
- 值类型包括:基本数据类型int系列,float系列,bool,string,,数组和结构体struct;
二、值类型和引用类型
- 、值类型和引用类型的说明:
(1)、值类型:基本数据类型int系列,float系列,bool,string,,数组和结构体struct。
(2)、引用类型:指针,slice切片,管道chan,map,interface等都是引用类型。
2、值类型和引用类型的使用特点:
(1)、值类型:变量直接存储,内存通常在栈中分配;
(2)、引用类型:变量存储的是一个地址,这个地址对应的空间才是真正的存储数据(值),内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
三、标识符的基本使用
1)、标识符的命名规范
(1)、标识符的概念:go中对各种变量,方法,函数等命名时使用的字符序列称为标识符(凡可以自己取名字的地房都叫标识符),如:var i int,var name string.
(2)、标识符的命名规则
①、由26个英文字母大小写,0—9,_组成;
②、数字不可以开头;
③、go中严格区分大小写;(var num int 和var Num int 是两个不同的变量)
④、标识符不能包含空格;
⑤、下划线“_”本身在go中是一个特殊的标识符,称为空标识符,可以代表任意其他标识符,但是它对应的值会被忽略,所以仅能作为占位符使用,不能作为标识符使用。
⑥、不能以系统保留关键字作为标识符,如break,if等等。
(3)、标识符命名的注意事项
①、包名:保持和package的名字和目录一样,尽量采取有意义的包名,简短,有意义,不要和标准库冲突;
②、变量名,函数名,常量名采用驼峰法;如:var stuName string=”tom”。
③、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问,如果首字母小写,则只可以在本包中使用;(首字母大写是公有的,首字母小写是私有的)
四、保留关键字和预订标识符
1、在go中,为了简化代码编译过程中对代码的解析,其定义的保留关键字只有25个。
2 、预定义标识符:36个,包括基础数据类型和系统内嵌函数。
五、运算符的基本介绍
- 、运算符是一种特殊的符号,用以表示数据的运算、赋值和比较。包括:算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和其他运算符。
- 、算数运算符:
案例演示:
3、关系运算符
- 结果都是bool型,要么是true要么是false。
- 关系表达式经常用在if或循环条件中。
关系运算符一览表:
4、逻辑运算符
逻辑运算符:用于连接多个条件;
5、运算符的优先级
六、流程控制
1、三大流程控制
- 顺序控制
- 分支控制
- 循环控制
2、顺序控制:程序由上到下逐行执行,中间没有任何判断和跳转。
案例说明:
3、分支控制
分支控制就是让程序有选择的执行。有如下三种形式:
- 单分支
- 双分支
- 多分支
(1)、单分支
基本语法:(当条件表达式为true时,就会执行{}中的代码)
If 条件表达式{
执行代码块
}
案例说明:
(2)、双分支
基本语法
If 条件表达式{
执行代码块1
}else{
执行代码块2
}
应用案例:
(3)、多分支
基本语法
If 条件表达式1{
执行代码块1
}else if 条件表达式2{
执行代码块2
}
....
else{
执行代码块n
}
应用案例:
(4)、嵌套分支
嵌套分支:在一个分支结构中又完整的嵌套另一个完整的分支结构。
基本语法:
If 条件表达式{
If 条件表达式{
}else{
}
}
案例演示: