GO语言基础 | 青训营笔记

489 阅读2分钟

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

本堂课的知识要点:

指针

函数要用指针,否则只是对数据的简单复制。

func 
add(n *int) {
        *n += 2
}

结构体

可以用结构体名称去初始化一个结构体变量,初始化时需传入结构体每个字段的初始值,也可以仅传入一个字段的初始值,其他字段则为空值。使用“.”也可以。 可以作为函数的参数,使用指针可以实现结构体对结构体的修改,还可以节省某些大型结构体拷贝的开销。

func (u user) checkPassword(password string) bool {
	return u.password == password
}

func (u *user) resetPassword(password string) {
	u.password = password
}

字符串操作

Contains:包含

Count:计数

Index:查找某个字符串的位置

Join:连接多个字符串

Repeat:重复多个字符串

len:获取字符串长度,但是中文字符可能会对应多个字符

字符串格式化

fmt.Println、fmt.Printf(%v打印任意类型变量,.2保留两位小数)

JSON处理:第一个字段必须大写开头;json.Marshal序列化:json.Unmarshal解序列;加入tag可以将字段由大写变为小写

时间处理

time.Now()、time.Date构造时间、now.Unix()获取时间戳、time.Parse()时间段

数字解析

“strconv”

进程信息

os.Args获取命令行参数、os.Getenv,osSetenv获取或设置环境变量、exec.Command快速启动子进程并获取输入输出

猜谜游戏:

生成随机数

用时间戳来初始化随机数种子rand.Seed(time.Now().UnixNano())

读取用户输入

os.Stdin得到输入,使用bufio.NewrReader()将输入转为一个只读的流,.ReadString('\n')读取一行输入,strings.TrimSuffix()去掉换行符,strconv.Atoi()转换成数字

在线词典

生成请求代码

浏览器打开检查,选择网络,右键请求,复制cURL(cmd),在网址curlconverter.com/#go粘贴curl请求,得到生成代码

生成request body

请求序列化

解析response body

返回解序列,通过网站oktools.net/json2go将JSON转为Golang Struct

SOCKS5代理

浏览器与代理服务器协商,然后发送请求,然后发送数据

TCP echo server

auth:

认证

请求阶段

relay阶段

课后个人总结

之前没有接触过GO语言,但是上完今天的课程后发现GO语言同其他编程语言都有共同点,所以理解GO语言的基本用法还是不难的。但是在学习SOCKS5代理时我听不懂,通过查看讲课PPT,我明白了SOCKS5代理的运行过程,但代码方面我还是不太懂,感觉有点复杂。