这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
结构体作为形参或者结构体方法使用指针类型是为了方便修改结构体的值和减少对大结构体的拷贝的花销
%T, %v 都为nil 变量才是nil,一个变量如果被指针赋值了 %T就不会为nil
%v 打印任意类型的值 %+v 多会打印名称 %#v 会多打印结构体名称
json Marshal Unmarshal 需要注意结构体字段首字母大写公开才行,否则,在字段名后面加上 json : "age"
Go 的时间格式化为什么是 2006-01-02 15:04:05,按 ANSIC 标准的日期格式,月、日、时、分、秒、年,最后加 MST 时区。对应就是 1 2 3 4 5 6 7
go env -w GOPROXY=goproxy.cn
提倡通过通信(chan)共享内存,不通过共享内存进行通信
使用空结构填充map的value实现set,不占内存
go test -bench=. -benchmem 基准测试命令
go tool compile -S main.go > main.s .s 汇编语言源程序; 操作: 汇编 .S汇编语言源程序; 操作: 预处理 + 汇编 只编译不链接形成.o文件。里面包含了对各个函数的入口标记,描述,当程序要执行时还需要链接(link).链接就是把多个.o文件链成一个可执行文件。
方法签名,返回值前面加下划线表示这个返回值可返回可不返回 func Constructor() ( _ Codec) { return }
linter 流程中借助 gofmt 工具 gofmt -w -r 'interface{} -> any' ./... 自带替换工具
svn co github.com/cloudwego/k… trunk -> 替代分支
DIG 域名 +trace 展示域名解析过程命令 通过传入config类,设置一些属性建立连接。
Go 语言各种数据类型都是在 _type 字段的基础上,增加一些额外的字段来进行管理的
一个程序能从并行上获得性能提升的上限取决于有多少代码必须写成串行的
git clone --depth=1 只拉取一层代码,不要历史记录,如果项目又大又老就好用