这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
Go 语法
-
a = append(a, "s") // 切片添加后必须赋值回给a
-
后置写法 自定义函数(传来的参数) (函数返回的参数) := 定义赋值 = 赋值
-
println 输出并换行
-
printf %v 代表任意类型
-
time.now 获取现在时间 time.format 重新格式化 time.Unix 获取时间戳
-
strconv 字符串和数字转换的包 如
f,_ := strconv.ParseFloat("11.2", 64) f,_ := strconv.Parseint("11",10, 64) // 十进制六十四位 n, _ = strconv.ParseInt("0x1000", 0, 64) //n 4096 -
os.Args 获取进程的运行时的一些参数
go run a.go a b // os.Args[0] = (.go目的地址) os.Args[1] = a os.Args[2] = b os.Getenv 获取环境变量 // os.Getenv("PATH") os.setenv 写入环境变量 os.Command 快速启动子进程并且输入输出 -
string map 的定义 可以直接 a:=map[string]int{赋值} 也可以加a:=make(str..) 不用赋值
-
struct method 写法
func (u *user) resetPassword(password string) {.. -
error 是一种数据类型 err != nil 存在错误
-
json
b, err := json.Marshal(a) 转换成json (序列化) fmt.println(string(b)) 才行 var xx userInfo //结构体类型 err = json.Unmarshal(b, &xx) json转成xx类型 fmt.printf("%#v\n", xx) 最详细方式打印 -
defer: 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。
-
bufio 存到缓冲区的文件读写 ,bufio 封装了io.Reader或io.Writer接口对象
reader := bufio.NewReader(conn) // 从conn 读取 reader := bufio.NewReader(os.Stdin) // 从stdin读入 input, err := reader.ReadString('\n') input = strings.TrimSuffix(input, "\n") // 去\n guess, err := strconv.Atoi(input) // 转int bufio.Readbyte() (从缓存区)读取单字节ReadFull:
func ReadFull(r Reader, buf []byte) (n int, err error)
从指定的读取器“r”读入指定的缓冲区“buf”,并且复制的字节与指定缓冲区的长度完全相等 返回指定缓冲区复制的字节数,如果读取的字节数小于指定缓冲区的长度,则返回错误
fmt.scanf的输入:
_, err := fmt.Scanf("%d\n", &guess) //需要时要吸收换行符
字典项目
思路:通过向翻译网站发送请求获取response,解析内容,通过准出的结构体定义找到需要的内容并输出
- network 找到请求 复制as cURL(bash)
- curlconverter.com/#go 粘贴
- 13 行 请求的内容 14行 创建请求 Newrequest ("POST","//(URL)", data) 36行 resp, err := client.Do(req) 发起请求 若连不上服务器才会err != nil
4.www.oktools.net/json2go 转出json结构体定义
Socks5代理
运行方式: go run main.go curl --socks5 127.0.0.1:1080 -v www.qq.com (-v 要打印请求的所有细节) 开发过程中的测试: nc 127.0.0.1 1080 (nc命令用于建立tcp连接)
1.log.Println("ver", ver, "method", method) // 加行日志打印出来
标题:「Go 语言上手-基础语言」第三届字节跳动青训营 - 后端专场