走进Go语言基础语言 | 青训营笔记

364 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第一天

Go语言基础知识

1、开发环境

配置golang后,使用golandvscode加上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++mappython的字典

8) range

对于slicemap可以用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)来反序列化