这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

第一节课

一、什么是Go语言

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

二、Go入门

1.基础语法

(1)HelloWorld
1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
)

func main() {
fmt.Println("hello world")
}
复制代码

第一行指的是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阶段

心得体会

  1. 第一次参加字节跳动的青训营,感觉节奏很快,课后需要很多时间
  2. 老师使用的是MAC系统,proxy部分有的windows系统难以运行需要找其他的方式
  3. go语言的清新风格与C或C++有很大的差距
  4. 课后我应该要多加练习掌握好Go的基础