Go语言基础 | 青训营笔记
这是我参与「第五届青训营」笔记创作活动的第1天。
一、本堂课重点内容:
Go语言是Google开发的一种静态类型、编译型、并发型的编程语言。本节课详细讲解了 Go 语言的相关背景知识,从开发环境、基础语法和标准库出发,通过详解三个实际案例,从入门到实操,由浅入深,快速入门 Go 语言。
二、详细知识点介绍:
开发环境
- 安装Go语言:在官网go.dev/下载并安装 Go 语言。
- 设置环境变量:在系统环境变量中设置 GOROOT 和 GOPATH。
- 安装编辑器或集成开发环境(IDE):作者选择 Goland。
基础语法
- 包声明:Go 语言源程序以 package 开头。
- 导入包:使用 import 关键字导入需要使用的包。
- 函数定义:使用 func 关键字定义函数。
- 变量声明:使用 var 关键字声明变量。
- 控制结构:Go 语言支持 if、for、switch、goto 等控制结构。
- 注意点:
- Go 中 = 和 := 的区别:
= 是用于给变量赋值,这个被赋值的变量一定要是一个已经被定义过的变量,否则会报错; := 是用于未被定义过的变量,编译器自动进行右值推导定义并赋值。 - Go 中的循环结构只有 for。
- if-else 中 if 后没有括号,添加后会自动去掉。
- switch 不执行后续分支,也不需要 break 语句来跳出。
- Go 的时间格式化为 2006-01-02 15:04:05。
- Go 函数中参数类型是后置的。
- Go 的格式化输出:
%v 只输出所有的值
%+v 先输出字段类型,再输出该字段的值
%#v 先输出结构体名字值,再输出结构体
- Go 中 = 和 := 的区别:
Go语言标准库
- fmt:提供了格式化输入输出的函数。
- os:提供了与操作系统交互的函数。
- net:提供了网络编程的函数。
- strings:提供了字符串操作的函数。
三、实践练习例子:
猜谜游戏
获取随机数,不加随机种子,每次获取的都是重复的随机数据。常用时间戳来初始化随机种子。
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
}
在线字典
抓包
代码生成
SOCKS5代理
Socks5代理原理
TCP Echo Server
有点难度,需要补充相关知识
四、课后个人总结:
今天是青训营开课的第一天,学习了Go语言入门课程,掌握了Go语言的开发环境、基础语法和标准库,基础部分因为有其他语言的基础,学起来比较轻松。然后通过三个小项目的实践(其实是前两个~),加深了对Go语言的理解和运用。希望能够坚持下来,加油!