Go 基础语言 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的第 1 篇笔记
- 浏览器找到请求,copy as cURL(bash)
- curlconverter.com/#go 生成代码
在js或者python这种脚本语言,返回的response可以由点或者字典取值出来。 但是对于go这种强类型语言,这不是最佳实现方式(但是也可以)。
我们需要写一个struct,字段和response一一对应。但是容易写错,所以也自动生成: oktools.net/json2go
然后将 response Unmarshal
Sock5:某些企业内网防火墙非常严密,相当于开个口子,给单个端口使用。
nc命令:nc IP PORT 直接与一个端口建立tcp连接
一个 clean 的架构
- 独立于框架。 架构不依赖于某些功能丰富的软件库的存在。 不必将系统塞入其有限的约束中
- 可测试。 可以在没有 UI、数据库、Web 服务器或任何其他外部元素的情况下测试业务规则
- 独立于用户界面。 UI 可以轻松更改,而无需更改系统的其余部分
- 独立于数据库。 可以随意更换数据库,如 Mongo -> Mysql, 业务并未绑定到数据库
- 独立于外部。 换句话说就是一个业务不知道外面发生了什么,只管自己
go 分层设计
4 层设计
- Models 数据实体
- Repository 作为业务逻辑、model 与数据库交互的中间层
- Usecase/Service 业务逻辑发生在这里
- Delivery/Controller 路由、RPC...
单元测试
- 单元测试概念和规则:- The Go Programming Language
- Mock 测试:github.com/bouk/monkey
- 基准测试:pkg.go.dev/testing#hdr…