go项目构建文件梳理
作用 .gitlab-ci.yml └─> 调用模板中的构建脚本 可能调用 make 或 build.sh Makefile // 提供统一的构建命令入口 ├─> build.sh (make build) └─> ciscripts/build.sh (make package) pack.sh // 完成打包、镜像推送 ...
作用 .gitlab-ci.yml └─> 调用模板中的构建脚本 可能调用 make 或 build.sh Makefile // 提供统一的构建命令入口 ├─> build.sh (make build) └─> ciscripts/build.sh (make package) pack.sh // 完成打包、镜像推送 ...
Protobuf Protobuf 提供了一种紧凑的二进制格式,序列化后的数据体积小,解析速度快,适合高性能场景。它支持多种编程语言,包括 C++、Java、Python、Go 等,能够实现跨语言的数据交换。 Protobuf 常用于以下场景: 分布式系统:在服务之间传递高效的结构化数据。 RPC 框架:与 gRPC 集成,用于定义服务接口和消息格式...
json 和 protojson使用 不是直接使用encoding/json库的原因: 序列化器 能否用于 Protobuf GO 结构体 输出标准 Protobuf JSON 能正确处理特殊 proto 类型 encoding/json 可以,但有限 否...
创建 Map创建了没有赋值,编译器会报错 //1.make函数创建 (推荐) var map2 = make(map[string]string) //make创建会直接初始化,值为nil //2.创建同时初始化 (有确定的键值时推荐) var map3 = map[string]int{"Go":100,"java":90} // 有这些键值时使用 //3.var常量定义 (不...
mapstructure 库 将 map[string]interface{} 数据解析到结构体中 基础使用(推荐做法:始终使用标签) 相关的包: import { "github.com/mitchellh/mapstructure" } 语法 mapstructure.Decode(待解析map数据, &目标) // 等价 bytes, err := j...
数字&字符转换 string 转换 为其他类型 f, _ := strconv.ParseBool("false") // bool g, _ := strconv.ParseFloat("123.23", 64) // float h, _ := strconv.ParseInt("-1234", 10, 64) // int64 i, _ := ...
时间戳 now := time.Now() // 当前本地时间 sec := now.Unix() // 秒级(Unix 时间戳) msec := now.UnixMilli() // 毫秒级(Go 1.17+) usec := now.UnixMicro() // 微秒级(Go 1.17+) nsec := now.UnixNano() // 纳秒级 封装 packag...
零值的定义取决于字段的类型 对于 string 类型,零值是空字符串 ““。 对于 int 类型,零值是 0。 对于指针类型,零值是 nil。 对于切片和映射,零值是 nil 或者长度为 0 的切片/映射。 对于数组,零值是 [] 不同初始化对应的默认值 // 方式1: 声明但不初始化 var slice []string // 默认值: nil // 方式...
copier库 用 github.com/jinzhu/copier 进行结构体之间数据拷贝 相关的包: import ( "github.com/jinzhu/copier" ) 语法 copier.Copy(&目标, &源) 基础使用 package main import ( "fmt" "github.com/jinzhu/copie...
json库 JSON 编码: 将 Go 的数据结构转换为 JSON 格式的字符串。通过 json.Marshal 函数实现。 JSON 解码: 将 JSON 格式的字符串转换为 Go 的数据结构。通过 json.Unmarshal 函数实现。 相关的包: import { "encoding/json" } 语法 json.Marshal(待解析...