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

485 阅读3分钟

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

课堂笔记

image.png

重点内容

  1. Go语言简介
  2. Go语言开发环境配置
  3. Go语言基础语法和标准库
  4. Go语言开发实战

Go语言简介

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

举例:HTTP服务器

package main

import (
    "net/http"
)

func main() {
    http.Handle("/", http.FileServer(http.Dir(".")))
    http.ListenAndServe(":8080", nil)
}

哪些公司在使用Go语言

image.png

字节跳动为什么全面拥抱Go语言

  1. 最初使用的Python,由于性能问题换成了Go
  2. C++不太适合在线Web业务
  3. 早期团队非Java背景
  4. 性能比较好
  5. 部署简单、学习成本低
  6. 内部RPC和HTTP框架的推广

配置Go语言开发环境

安装Golang

配置集成开发环境

基于云的开发环境

基础语法

运行方法

在终端中输入

go run example/01-hello/main.go
go build example/01-hello/main.go
./main

也可以在IDE中点击按钮运行。

1. Hello world

IDE中鼠标悬浮在函数上查看函数文档及链接到包的在线文档。

package main

import (
   "fmt"
)

func main() {
   fmt.Println("hello world")
}

2. 变量

字符串可以通过加号拼接。符号优先级类似于C++。

声明方式:

  1. 自动推导变量类型 var a = 1
  2. 显示指定变量类型 var b int = 1
  3. 变量名:=值 f := a+1

常量:

  1. 将var改为const

3. if else

没有括号。必须直接接大括号。

可以使用类似C++11标准的方法,在if内声明变量。

4. for

只有for循环。

5. switch

类似于C++,但是不需要添加break语句。

可以使用任意的变量类型。可以不提供变量。

6. 数组

数组长度不可变,业务上常用切片。

7. 切片

可变长度的数组。创建时可以指定长度

使用append追加元素,赋值回原切片。

8. map

语法上类似于C++ STL中的map。内部无序。

9. range

辅助for循环使用。对于map提供返回两个值的语法。

10. 函数

后置返回类型。可以返回多个值。

11. 指针

操作相比C++来说比较有限。

12. 结构体

结构体指针同样使用.符号。

13. 结构体方法

类似于类成员函数

14. 错误处理

使用一个单独的返回值处理错误信息。

15. 字符串操作

有多种内置函数供使用。

16. 字符串格式化

Printf函数类似于C语言语法。%v可以作为多种数据类型的占位符。

17. JSON处理

结构体中每个字段第一个字母大写,使用json.Marshal序列化。

打印时使用string()反序列化。

使用json.Unmarshal反序列化。

18. 事件处理

time包中可以使用具体的字符串指定时间格式。

19. 数字解析

使用strconv包解析字符串。

20. 进程信息

使用os包获取进程信息、启动子进程等。