这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
第一节课
一、什么是Go语言
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库(类似与Python)
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
二、Go入门
1.基础语法
(1)HelloWorld
1 | package main |
第一行指的是main是程序的入口 import表示引入format包,这个包主要用于字符串的处理 主函数main使用fmt来输出helloworld
如何编译go文件?
- go run exmaple/01-hello/main.go
- go build example/01-hello/main.go
变量声明
- var name = value
- 变量名 := value
if else
if和其他语言不同,不需要有括号
循环
只有for循环,没有其他的do while循环
switch
- switch后不需要加括号
- 分支不需要加break默认跳出
切片
可用长度的数组,一般实际情况使用切片
range
map和slice可以用range进行遍历更加方便 第一个值是key 第二个值是value
指针
作用有限,主要用于修改数据
结构体
- 可以用结构体名称初始化变量
- 结构体能作为函数参数
- 使用指针能对结构体进行修改
错误处理
不同于Java抛出异常,Go中的错误处理可以在函数中加入error
JSON处理
- 可使用JSON.Marshal()进行处理
- JSON.UnMarshal()反序列化
进程信息
- os.Args获取进程在执行时命令行中的参数
三、Go小项目实战
Guessing Game
注意点与收获:
- 获取随机数需要有随机数种子seed
- 读取用户输入可以转化为流
- 项目进程中在迭代的,可以一步步完善
- 项目是一次性的,可以加上循环进行多次评估
SOCKET5代理服务器
注意点与收获
- 第一步实现TCP echo server
- auth
- 配置请求阶段
- 配置relay阶段
心得体会
- 第一次参加字节跳动的青训营,感觉节奏很快,课后需要很多时间
- 老师使用的是MAC系统,proxy部分有的windows系统难以运行需要找其他的方式
- go语言的清新风格与C或C++有很大的差距
- 课后我应该要多加练习掌握好Go的基础