Go 语言基础 - 基础语法 | 青训营笔记

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天,这次课程我主要学习了GO语言的基本特点,基础语法,以及三个关于GO语言的实战应用:猜数游戏,在线词典,以及SOCKS5的应用。

1.GO语言的特点

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台
  8. 垃圾回收

GO语言原生就支持并发,并不需要第三方库的支持,并发执行效率很高。GO语言的语法和C一样简单,并且也具有JAVA的跨平台和垃圾回收的优点。

2.GO语言的基础语法

2.1变量

image.png GO语言有多种变量声明方式,一般不用显式声明变量类型。

2.2 if else语句

GO语言的if else语句,不用写括号,但是{必须和if必须在同一行,代码如下:

if 7%2==0 {
    do something
    }

2.3 switch语句

GO语言的switch语句相较于C语言的区别:

  1. 不用写括号
  2. 变量不只是整型,还可以是结构体
  3. 每个case不用写break,默认就只执行case内部的代码 image.png

2.4 切片

切片是GO语言的重要特点,它相当于一个可变长的数组。左闭右开,与python的区别是不能负数索引。 slice 的原理实际上它存储了长度和容量,以及一个指向数组的指针,执行 append 操作的时候,如果容量不够的话,会扩容并且返回新的 slice。 image.png

2.5 map

map就相当于其他语言的哈希表。

image.png

2.6 结构体方法以及结构体函数

结构体函数相当于类成员函数,写法是:第一个参数,加上括号,写到函数名称前面 image.png

2.7 错误处理

不同于其他语言常用的try catch结构,GO的错误处理用的是err。所以一个函数通常返回2个值,第二个值是错误信息。

2.8 JSON处理

go语言里面的JSON操作非常简单,对于一个已有的结构体,我们可以什么都不做,只要保证每个字段的第一个字母是大写,也就是是公开字段。那么这个结构体就能用JSON.marshaler去序列化,变成一个 JSON 的字符串。序列化之后的字符串也能够用JSON.unmarshaler去反序列化到一个空的变量里面。 但是这样默认序列化出来的字符串的话,它的风格是大写字母开头,而不是下划线。我们可以在后面用 json tag 等语法来去修改输出 JSON 结果里面的字段名。