Go框架学习 | 青训营笔记

109 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

Gorm

  • 使用名为ID的字段作为主键
  • 使用结构体的蛇形负数作为表名
  • 字段名的蛇形作为列名
  • 使用CreatedAt,UpdatedAt字段作为创建更新时间
  • 支持MySQL、SQLServer、PostgreSQL、SQLite

update

使用clause.OnConflict处理数据冲突

查询

  • 使用First时,需要注意查询不到数据会返回ErrRecordNotFound
  • 使用Find时,不会返回查询错误,返回空字符串
  • 使用结构体作为条件查询时,只会查询非零值字段
  • 更新Struct时,只会更新零值,若需要更新零值,选择使用Map或者Select

Kitex

基于Golang的微服务RPC框架

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest

微服务RPC框架:Serialization 序列化,Transport 传输

cd kitex-examples/hello
go run .
# client2
go run ./client

修改hello.thrift
kitex -service a.b.c hello.thrift
# 若当前目录不在 $GOPATH/src 下,需要加上 -module 参数,一般为 go.mod 下的名字
kitex -module "your_module_name" -service a.b.c hello.thrift

IDL(接口定义语言, Interface Definition Language)

序列化协议

  • thrift
  • protobuf

消息协议

  • Thrift
  • Kitex Protobuf
  • gRPC

传输协议

  • TTHeader - Thrift Kitex Protobuf
  • HTTP2 - gRPC

hertz

Golang微服务HTTP框架

笔记项目

https://github.com/cloudwego/kitex-examples
docker build -t kitex-examples .