1. 变量****
(1)指定变量类型,声明后若不赋值,使用默认值,int默认值 0,string默认值为空。
(2)根据值自行判断变量
(3)省略var。 :=(声明且赋值)左侧的变量不应该是已经声明过的,否则会报错。
(4)多变量声明。eg:var a, b, c int
2. if else****
(1)单分支,if_{}结构。即使只有一句话也不能把大括号去掉。
(2)双分支,If_{}else{}结构。
(3)多分支,if_{}else if_{}……else{}结构;else不是必须的;只能有一个执行口。
(4)嵌套分支,
注意:Go的if的条件判断语句 里面允许声明一个变量,但是这个变量的作用域只能在该条件逻辑块内,在其他地方起不了作用。
3. 循环****
(1)for循环,循环条件是返回一个布尔值的表达式;
(2)不加循环条件就是一个死循环;
(3)Go语言中没有while循环;
4. Switch****
(1)流程:先执行表达式得到值,然后与case的表达式进行比较,如果相等就匹配到相应的case的语句块,然后退出switch控制;如果表达式的值没有和任何case的表达是匹配成功的话 则执行default的语句块。
(2)case后的表达式可以有多个,使用“,”间隔。
(3)case语句块不需要写break,因为默认有break。
5. 数组****
数组可以存放多个同一类型数据。数组也是一种数据类型。在Go中数组是值类型。
6. 切片(slice)****
(1)切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。
(2)切片的使用与数组类似,遍历切片、访问切片的元素和求切片长度len(slice)都一样。
(3)切片党的长度是可以变化的,因此切片是一个可以动态变化数组。
(4)切片定义: var 切片名[]类型
7. Map****
Map是key-value数据结构,又称为字段或者关联数组。类似其他编程语言的集合,是编程中经常使用到。
(1)var map 变量名 map[keytype]valuetype。Golang中的map的key可以是很多种类型,如 bool,数字,string,指针,channel,还可以是接口,结构体,数组,通常为int,string。Value的类型与key基本一样,通常为数字,string,map,struct。
8.range****
(1)是go语言一种独有的结构,可以用来遍历访问数组的元素。
(2)语法
for index, value := range array01{
……
}
1)第一个返回值index是数组的下标
2)第二个value是在该下标位置的值
3)他们都是仅在for循环内部可见的局部变量
4)遍历数组元素的时候,如果不想使用下标index,可以直接把下标index标为下划线_
5)Index和value的名称不是固定的,是可以自行指定的
9. 函数****
(1)自定义函数:(类似java方法封装)
func 函数名(形参列表)(返回值类型列表){
执行语句……
return 返回值列表
}
1)形参列表:表示函数的输入;
2)函数中的执行语句:表示为了实现某一功能代码块
3)函数可以有返回值,也可以没有
(2)系统函数:系统中自带的函数,如:fmt等
10. 指针****
(1)获取变量的地址用 “&”。
(2)指针变量存的是一个地址。
(3)获取指针类型所指向的值用“*”。
11. 结构体****
(1)golang也支持面向对象编程,但与传统面向对象编程有区别,并不是纯粹的面向对象语言。比较准确说是支持面向对象编程特性。
(2)golang没有类,go语言的结构体和其他编程语言的class有同等地位。
(3)golang面向对象编程非常简洁,没有传统面向对象语言的继承、方法重载、构造函数和析构函数、隐藏的this指针等等。
(4)golang仍然有面向对象编程的继承、封装和多态的特征,只是方式和其他语言一样。
(5)golang通过接口关联,耦合性低,很灵活。
12. 结构体方法****
(1)方法声明和调用
Type A struct{
Num int
}
func (a A) test(){ //表示A结构提有一个方法,方法名为test
fmt.Println(a.Num)
}
14. 字符串操作****
(1)len():用来统计字符串的长度。
(2)[]rune(T type):将一个字符串转化为切片,用于遍历含有中文的字符
(3)i,err := strconv.Atoi():将一个字符串转化为一个整数,返回值有i和error两个
(4)str := strconv.ItoA() :将一个整数转化为一个字符串
(5)bytes := []byte(str string) :字符串转化为byte切片
(6)str := string([]byte{97,98,99}) :byte切片转换为字符串
(7)str := strconv.FormatInt(i int,base b): 将十进制转化为其他进制(2到32进制)
(8)var judge bool = strings.Contains(BigStr string,littleStr string) :判断一个字符串是否包含另一个字符串
(9)var counts int = strings.Count(s, str string) :返回一个字符串有几个指定的字符串
(10)var judge bool = string.EqualFold(“abc”,“Abc”): 不区分大小写的字符串比较,区分的使用 == 就可以
(11)var index int = strings.Index(s,str string): 寻找字符串第一次出现的位置,没有的话返回-1
(12)var lastIndex int = strings.LastIndex(s,str) :寻找一个字符在字符串中最后一次返回的位置
(13)var str string = strings.Replace(s,oldstr,newstr,n):将一个字符串中的字符串替换成另一个字符串,n表示替换几个,
如果是-1表示替换所有
(14)stringArr string[] = strings.Split(s,str) :将一个字符串按照指的的分隔符分割为一个字符串数组
(15)strings.ToLower(s)、stings.ToUpper(s) :将字符串进行大小写的变化
(16)strings.TrimSpace(s):去掉字符串两边的空格
(17)strings.Trim(s,str): 去掉字符串两边的指定字符串(str包括指定字符串和空格)
(18)strings.TimLeft(s,str) 、strings.TimRight(s,str):去除左右两边指定的字符串,顺便去掉多出的空格
(19)strings.HasPrefix(s,str)、strings.HasSuffix(s,str):判断一个字符串是否是以指定字符串开头或者结尾的
15. 字符串格式化****
(1)%s:输出字符串(string和[]byte)值
(2)%d:输出十进制整数值
(3)%b: 输出整型的二进制表示形式
(4)%#b 输出整型的二进制完整表示形式
(5)%o 输出整型的八进制表示形式
(6)%#o 输出整型的八进制完整表示形式
(7)%x 输出整型的十六进制表示形式
(8)%#x 输出整型的十六进制完整表示形式
(9)%X 输出整型的十六进制表示形式(大写)
(10)%#X 输出整型的十六进制完整表示形式(大写)
(11)%v 输出值的本来形式
(12)%+v 输出值的本来形式,如果值为结构体,对结构体字段名和值展开
(13)%#v 输出Go语法格式的值
(14)%t 输出布尔值
(15)%T 输出值对应的Go语言类型
(16)%% 输出百分号
(17)%c 输出Unicode码对应的字符
(18)%U 将Unicode码转换为对应的Unicode码点
(19)%f 输出浮点数
(20)%e 输出数值的科学计数法形式
(21)%E 与%e功能相同
(22)%g 输出紧凑的浮点数
(23)%p 输出指针
(24)%q 格式化字符串,在字符串的两端加上双引号
16. JSON处理****
JSON是目前主流的数据格式。
通常程序在网络传输时会先将数据序列化成json字符串,收到方得到json字符串时,在反序列化恢复成原来的数据类型。