这是我参与「第五届青训营 」伴学笔记创作活动的第 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代理的运行过程,但代码方面我还是不太懂,感觉有点复杂。