Go module 如何发布 v2 及以上版本?
Johng | Golang
by John
5y ago
用上 go mod 之后,依赖包都是通过版本打 tag 的形式确定版本号。比如 github.com/mnhkahn/gogogo v1.0.9。每次都改动都是在累加低位的版本号,一直这么用也挺安逸的。突然有一天,我的一个底层包需要大改,导致和之前的版本彻底不兼容,这种情况下如何设置版本号,如何能让调用方成功接入? Go module 版本号 先讲一下 Go 在用的版本号协议semver (Semantic Versioning)。它定义的版本号格式是: vMAJOR.MINOR.PATCH MAJOR 主版本号,如果有大的版本更新,导致 API 和之前版本不兼容。我们遇到的就是这个问题。 MINOR 次版本号,当你做了向下兼容的新 feature。 PATCH 修订版本号,当你做了向下兼容的修复 bug fix。 v 所有版本号都是 v 开头。 比如我们用的 Go 语言,目前是 1.12.0。它还是 Go 1,每次升级都保证是兼容的,12的版本号是新 feature,而最末尾的版本号是修复。说明当前的版本上了之后还没有修复过问题。 我这次也是搞了一个不兼容的更新,所以需要升级到 v2.0.0。 Go 项目如何升级 v2? 假设你的项目已经支持 go module 了。 修改 go.mod 第一行,在[crayon-5d7f9c2f46f13996014890-i ..read more
Visit website
GRPC之proto语法
Johng | Golang
by John
5y ago
本文描述如何使用proto3语法去构造你的数据结构,对官方文档不完全译文,只是摘出本人需要的部分来简单翻译官网地址,如果你无法进入官网链接请自行"跳墙"-_-. 1.定义消息类型 让我们先看一个 proto3 的查找请求参数的消息格式的例子,这个请求参数例子模仿分页查找请求,他有一个请求参数字符串,有一个当前页的参数还有一个每页返回数据大小的参数,proto文件内容如下: [crayon-5cf8e46377771074744254/] [crayon-5cf8e46377777187148242-i/] [crayon-5cf8e46377779032600390-i/] 1.1 指定字段类型 在上面的例子中,所有的属性都是标量,两个整型(page_number、result_per_page)和一个字符串(query),你还可以在指定复合类型,包括枚举类型或者其他的消息类型。 1.2 分配标量 就像所看见的一样,每一个被定义在消息中的字段都会被分配给一个唯一的标量,这些标量用于标识你定义在二进制消息格式中的属性,标量一旦被定义就不允许在使用过程中再次被改变。标量的值在1~15的这个范围里占一个字节编码(详情请参看 谷歌的 Protocol Buffer Encoding )。 1.3 指定属性规则 消息属性规则如下: [crayon-5cf8e4637777a991405662 ..read more
Visit website
安装gRPC开发环境
Johng | Golang
by John
5y ago
gRPC开发源码包安装 安装官方安装命令: [crayon-5cdbdb8fecb83868929550/] 是安装不起的,会报: [crayon-5cdbdb8fecb88622753219/] 原因是这个代码已经转移到github上面了,但是代码里面的包依赖还是没有修改,还是 google.golang.org 这种地址, 所以不能使用go get的方式安装,正确的安装方式: [crayon-5cdbdb8fecb89814830286/] Protocol Buffers编译文件下载 用以编译proto接口协议文件,直接下载二进制文件:https://github.com/protocolbuffers/protobuf/releases         参考链接: https://www.jianshu.com/p/dba4c7a6d608 ..read more
Visit website

Follow Johng | Golang on FeedSpot

Continue with Google
Continue with Apple
OR