这是我参与「第五届青训营 」笔记创作活动的第一天
Go语言基础知识
1、开发环境
配置golang后,使用goland或vscode加上go插件即可
2、基础语法
1)变量
变量定义时,具体类型在变量后面定义,变量前使用var,或直接定义变量后用:=赋值
var a = "xx"//根据所赋的值来定义该变量类型
var b int//直接定义变量类型
var c, d int = 1, 2//同时定义并初始化多个变量
e := "xx"//使用:=赋值
const定义常量,具体用法和上方的var基本类似
2) if else
用法与c++很类似,区别在于if后面的判断不用加括号,并且主体必须加大括号,其它基本相同
3) 循环
go语言只有for循环,但用途更广,可以直接for{}表示死循环。其和c++的for相比,也是不用加小括号,其他基本相同
4) switch
这里的switch语句比c++的switch用途更广,其中switch的变量可以是任何一个对象,且case内容更灵活。每个case默认break。
5) 数组
定义形式为var a [size]int,用途和c++的数组基本相同
6) 切片
定义形式为s := make([type],size),相当于c++的vector,是一个可变长度的数组
7) map
定义形式为m := make(map[type1]type2),其中type1是索引,type2是索引对应的值,相当于c++的map和python的字典
8) range
对于slice或map可以用range来快速遍历,形式如下
m := map[string]string{"a": "A","b": "B"}
for k, v := range m{
fmt.Println(k, v) // b B; a A
}
9) 函数
定义形式为func funcName(arg1,arg2...)funcType{},与c++的函数大致相同
10) 指针
用于在函数内部改变传入参数,与c++的引用操作类似
11) 结构体
与c++的结构体类似,赋值时形式为a := struName{arg1:"xxx",arg2:"xxx"}
12) 结构体方法
举例如下
func (u user) func1(s string) bool{
return u.s == s
}
13) 错误处理
可以在函数返回值加一个err类型的参数,函数返回时返回对应错误类型,可以在程序出错时更精确地找到错误地点
14) json处理
可以使用json.Marshal(x)来序列化一个json对象,也可使用json.Unmarshal(x)来反序列化