1.1什么是Go语言
1.2Go语言入门 环境
1.3基础语法
1.3.1变量
var name="value" 自己推断变量类型;
也可以显式类型 var c int =1
name:= type(value)
常量: const name ="value"
g := a+"foo" 字符串拼接
1.3.2 if else
{}花括号不能省略,if后的条件没有();
1.3.3 只有for循环
1.3.4 switch
C++中没有break,会继续跑完所有分支
而Go中默认不用加break,跑完一个case 就直接退出;
并且Go的switch更加强大,switch后面可以不加变量,case 后面可以加条件语句,替代if-else
1.3.5 数组
真实业务中,因为数组长度固定很少用,更多使用切片
1.3.6 切片
append()必须返回值赋值给原切片; 追加元素;
1.3.7 map无序
使用最频繁的数据结构
name :=make(map[key]value-type)
r,ok :=m["unknow"] ,ok 获取这个map里是否存在这个key
1.3.8 range 快速遍历
1.3.9 函数
函数参数(name type)
1.3.10 指针*
主要操作:对传入的参数 进行修改
比C++的指针 操作有限
1.3.11 结构体
1.3.12 结构体方法
func check(u user,pass string) bool{
return u.pass==pass
}
修改参数位置 从普通函 数变成类成员函数
func (u user) check(pass string) bool{
return u.pass==pass
}
1.3.13 错误处理
不同于java的异常,Go用单独的返回值err error返回错误信息
能够很清晰的知道哪个函数出现了错误,用ifelse处理错误
1.3.14 字符串操作
Contains 是否包含
Count 字符串包含几个子字符串
Index 查找位置
Join 拼接
Repeat 重复拼接,等
len 一个中文字符会对应多个字符长度
1.3.15 字符串格式化
println 打印换行
printf() 格式化 %v代表各种变量值;%+v代表更加详细的name:value变量;
%#v代表详细到 结构体.变量; %.2f 位数
1.3.16 JSON处理
只要保证结构体的第一个字母是大写,
用json.Marshal(结构体name)序列化 转成数组
打印String强转
json.Unmarshal(结构体name)反序列化
1.3.17 时间处理
1.3.18 数字解析 strconv包
ParseInt("字符串",进制(0代表自动推测) ,64代表返回64精度的整数 )