微服务效率工具 goctl 深度解析(上)

前语

本文依据 安前松 的视频共享整理而来,视频回放地址如下:

www.bilibili.com/video/BV1Hr…

goctl 的由来

1. goctl 的诞生

goctl 的最早功用是为了处理 GRPC 内网调二进制亡者列车试问题,大约是在 2019 年,在咱们的出产环境中,rpc 是内网隔离的,不行经过外网拜访,为了android下载安装快速去 mock 一些线上 RPC client 的恳求,androihttps域名d平板电脑价格就简略的完结了榜首版别的代码生成,首要意图是去拜访 RPC Server 做一些调试。

2. 为什么需求 goctl?

  • 下降沟通本钱

    沟通,是团队协作进二进制转化为十进制行信息交换的一种形式,沟通的方法有许多种android平板电脑价格,会议沟通、文档沟通、谈天沟通,相信不论接口卡是哪种索引的作用方法,沟通都是团队中最难的一个环节,会议沟通需求占用大接口量时刻,动则半小时起步,文档沟通相同,也会占有大量时刻去构思和编写大接口测验篇幅的文档,最终或许还没表达出预期方针,线上谈天,需求双方都在线上才干进行信息交换,当然咱们这儿沟通交换的信息更多是指开发中的一些内容,接口自动化如接口信息、布置信息等。

  • 下降团队耦合

    索引了沟通,那么团队之间的协作的耦合是避免不了的,例如:在前后端开发中,最大的耦合是接口的耦合,前端完结了规矩 UI 绘制后,需求等候后端的接口布置到对应环境才干完结功用的调试,在此期间https域名,前端的团队资源就会大大糟蹋,由此还会导致项意图延android的drawable类期等问题。

  • 进步开发功率

    除了https域名沟通接口是什么本钱和团队耦合以外,每个团队在进行项目开发时也有许多时刻是在做重接口文档复的作业,例如:咱们在开发一个新的功用时,需求去界说接口,编二进制换成十进制算法写接口文档,二进制亡者列车编码准备作业android下载安装,事务开发,model 文件,编接口写 Dockerfihttps安全问题le 文件,编写 k8索引失效的几二进制亡者列车种状Androids yaml 文件,在这些上面咱们能够在每个环节上都有进步https安全问题的空间,让用户接口类型将真正的时刻会集在事务开发上。

  • 下降过错率

    在之前的开发实践中,常常会呈现 grpc servandroid手机er 完结不完全的问题,g接口自动化rpc server 完结类常常会呈现编译不过的状况;除此之外,数据库查询层代码开发,android下载sHTTPSql 句子的编写多参,少参,参数错位,在编译过程中很难发android手机现,一般或许到 QA 环节才干发现,更甚者会导致线上问题。

3. 怎样了解开发标准?

开发标准,包括接口类型编码标准,工程标准,提交标准,代码审阅标准,布置标准等等,团队内假如将开发标准一致起来,其收益可想而知,举个例子接口:假定你地点的android手机公司没有统索引是什么意思一开发标准,这时需求你去做一些跨部门协作索引失效的几种情况或许支撑,焕然一索引新的开发环境让你望而生畏,还没开端就有了冲突的想法,这岂不是违背https和http的差异了支撑的初衷。

4. 怎样了解工程功率?

工程功率,要了解工android手机程功率,能够先看看『功率』的索引界说:

功率是指单位时刻接口文档内完结的作业量

接口和抽象类的差异率的方针是快,但快并不是android/harmonyos功率,换句话说便是在单位时刻内完结的高质量作业,这才是咱们要追求的方针二进制,那么工程功率android的drawable类便是为了『缩短从开发到线上的距离』

二 、goctl接口和抽象类的区别 的装置及功用介绍

1. 介绍

  • goctl 定索引是什么意思

    goctl 界说,精确说是定位吧,可androidstudio装置教程以了解为一个代码生成脚手架,其核心思想是经过对 DSL 进行语法解析android平板电脑价格、语义分析到数据驱动完结完结代码生成功用,旨在协助开发二进制转八进制者从工Android程功率角度进步开发android下载者的开发功率。

  • 处理的问题

    • 进步开发功率:goctl 的代码生成覆盖了Go、索引的作用Java、Android、iOS、TS 等多门语言,经过索引失效 goctl 能够一键生成各端代码,让开发者将精力会集在事务开发上。
    • 下降沟通本钱:运用 zero-aandroandroid平板电脑价格id是什么体系pi 替代 API 文档,各端以 zero-api 为中心二进制八进制十进制十六进制转换生成各端代二进制怎么算码,无需再经过会议、A二进制亡者列车PI 文档来进行接口信息传https和http的区别递。
    • 下降接口和抽象类的差异耦合度: 在之前的开发实践中,没有 goctl 之前,咱们选用的是二进制转换器传统的 API 文档来作为接口信息传递的载体,然后经索引过会议来https协议进行二次 review,咱们都知道,前端开发作业中,除了 UI 的绘制外便是 U二进制转化为十进制I 联调,假如https安全问题比较活跃HTTPS的前端开发者,或许会自己运用一些脚手架或许自己 mock 一些数据去进行 U接口英文I 联调android是什么体二进制亡者列车,反之,也有原地等候后端布置后再联调的 case,原因是自己写 mock 数据太耗时,也不想去动,假如前端的开发进度在后端之前,那么在后端布置到接口文档环境中这期间,前端只能Android安静的原地等候,这不仅是一种资源的糟蹋,也会造成项目进度的索引失效延期,有了 zero-api ,前端能够运用 goctl 去生成适量的 mock 数据来进行 UI联调。
  • 开展历史

微服务功率东西 goctl 深度解析(上)

goctl 开展历史索引超出矩阵维度能够大约的过一下,挑几个标志二进制转换器性的功用讲讲吧接口文档

首要是 goctl randroid手机pc,goctl rpcAndroid 的榜首版别便是 goctl 的雏形,首接口测试要是为了生成 client 代码对 rpc 做调试运用,具体就不展开了。goctl rpc 的开展经过了许多曲折,印象比较深入的应该算 goctl索引超出了数组界限https协议什么意思 rpc proto 向二进制的运算规矩 goctl rpchttps协议 protoc 的改变,这期间为了处理许多问https域名题,才做了相应的变更,具体细节在共享 rpc 代码生成运用那块再具体共享二进制,在这儿边其实对我来说印象最深入的一个功用算是 goctl model 了,其算是我开端保护 goctl 的一个入手点android下载吧,也是索引失效我从事务开索引失效的几种情况口crc过错计数发实践中发掘的处理方案吧,终究我仍是比较 “懒”,记住在其时开发一android的drawable类个事务模块,因为事务比较大,需求创立的数据表也许多,在没有 goc索引图tl 前都是自己去手动编码完结,这一块我记忆二进制转换器犹新,花了仅一天的时刻来写 model 文件,因为我没有用 oandroid什么意思rm 的习气,所以这块二进制转换器 sql 完全是裸 sql 句子,服务接口跑起来后才发现有许多 sql 传参上的过错,根本都是多参少参问题,除此之外,每次新索引超出了数组界限什么意思增索引,或许字段变更,缓存的索引是什么意思相关逻辑保护也让Android我非常头疼,所以结合其接口和抽象类的区别时的开发最佳实践,将其依照缓存与android/harmonyos否把这块的作索引符号业交给了 goctl,榜首版别 goctl model 生android的drawable类成首要是网页版别,后https协议面陆续集二进制成到 goctl 里了,这给我后续开发带android下载装置来了很大的开发功率二进制的运算规则收益。

  • 展望未来

    goctl 集成了比较多https协议的功用,其根本是以代索引是什么意思码生成为主,开发标准为辅,goctl 是围绕 zero-api 为中心做代码生成的,因而在将来,zero-api 的建设会https安全问题成为咱们的重心:

    • ast 的改造android下载安装:替换原有比较重的 antlr4,能https和http的区别够处理许多人装置 goctl 时 内存不够,体系接口英文架构不支撑索引的各种https和http的差异二进制转八进制题,这
    • goctl mock 的支撑,最大极限解耦各二进制转换器端依靠耦合

2. 装置

Goctl 装置有两种方法,分别是 ghttps安全问题o gehttps域名t 或许 go install,其次是 d二进制换成十进制算法ocker。

go get/install

# Go 1.16 之前版别
$ GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/zeromicro/go-zero/tools/goctl@latest
# Go 1.16 及今后版别
$ GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/go-zero/tools/goctl@latest
# macOS
$ brew install goctl
# 验证
$ goctl --version
goctl version 1.3.5 darwin/amd64
# 检查 goctl
$ cd $GOPATH/bin && ls | grep "goctl"

假如履行 goc索引tandroid什么意思l索引符号 –versioandroid/harmonyosn 提示 command not found: goctl 的android是什么体系过错,请先排查 $索引的优缺点GOBIN 是否在环境变量下。

dAndroidocker

# 1. pull
$ docker pull kevinwan/goctl
....
# 2. ls
$ docker image ls | grep "goctl"
kevinwan/goctl        latest    7fd46843de3d   5 weeks ago    383MB
# 3. run
$ docker run -it kevinwan/goctl /bin/sh

3. 功用介绍

咱们接下来看看功用介绍,二进制八进制十进制十六进制转换经过指令 goctl –help 能够列出咱二进制计算器们当时现已支撑的功用,或许咱们在看文档时也没有专注下来对这androidstudio装置教程块指令做研究,仅二进制计算器仅用到一些高二进制怎么算频指令,https安全问题今天既然是 goctl 的专题共享,咱们就花点时刻来一起过过,带着咱们从 0 到 1 了解 goandroid下载ctlandroid手机

$ goctl --help
A cli tool to generate api, zrpc, model code
Usage:
goctl [command]
Available Commands:
api         Generate api related files
bug         Report a bug
completion  Generate the autocompletion script for the specified shell
docker      Generate Dockerfile
env         Check or edit goctl environment
help        Help about any command
kube        Generate kubernetes files
migrate     Migrate from tal-tech to zeromicro
model       Generate model code
quickstart  quickly start a project
rpc         Generate rpc code
template    Template operation
upgrade     Upgrade goctl to latest version
Flags:
-h, --help      help for goctl
-v, --version   version for goctl
Use "goctl [command] --help" for more information about a command.

goctl 的功用比较丰富,所以难免指令参数比And二进制换成十进制算法roid较多,咱们在运用时除了看文档外,也善用 –help 这个索引是二进制换成十进制算法什么意思flag,因为他会告知你每个指令或许子指令的用法,需求什么参数,参数类型是字符接口是什么串仍是布尔,是必填仍是可选,切不行自己猜想他应该用什么 flag,虽然 goctlhttp接口测试s域名 是我自己首要保护,Android其实许多时分,有些指令比较文档,没有https安全问题太多 feature 去更新,我也记不住,我也是经过 –help 去检查功用介绍的

要点演示

goctl completion

检查 goctl 版别

$ goctl --version
goctl version 1.3.5 darwin/amd64
1.3.5

本节内容仅合适 go接口测验用例规划ctl 版别在 1.3.5及之前的的主android下载动补接口全设置参阅,1.3.5版别及之前仅支撑类 Unix 操作体系,不支撑 Windows 的主动补全,1.索引3.5 之后的请越过此节索引的效果内容

  1. 履行 goctl completion -h 检查运用说明
$ goctl completion --help
   NAME:
   goctl completion - generation completion script, it only works for unix-like OS
USAGE:
goctl completion [command options] [arguments...]
OPTIONS:
--name value, -n value  the filename of auto complete script, default is [goctl_autocomplete]

接口是什么接口crc错误计数据协助说明得知,goctl comandroid平板电脑价格pletion 支撑经过 –name 传递一个参数生成主二进制亡者列车动补全脚本文件名,但该参数为非必填,默认不填时为goctl_autocomplete 文件,其位androidstudio装置教程于 $GOCTLHOME 目录下接口是什么

  1. 履行 goct二进制换成二进制八进制十进制十六进制转换十进制算法l completion 来生成主动补全脚本
$ goctl completion
generation auto completion success!
executes the following script to setting shell:
echo PROG=goctl source /Users/keson/.goctl/.auto_complete/zsh/goctl_autocomplete >> ~/.zshrc && source ~/.zshrc
# 或许
echo PROG=goctl source /Users/keson/.goctl/.auto_complete/bash/goctl_autocomplete >> ~/.bashrc && source ~/.bashrc
  1. 检查当时 shell
$ echo $SHELL
/bin/zsh
  1. 挑选对应 shell 的脚本履行,我这儿为 zs索引页是哪一页h,所以履行指令如下
$ echo PROG=goctl source /Users/keson/.goctl/.auto_complete/zsh/goctl_autocomplete >> ~/.zshrc && source ~/.zshrc
  1. 重启终端验证结果https域名
# 键入 goctl 后按下 tab 键检查主动补全提示
$ goctl # tab
api            -- generate api related files
bug            -- report a bug
completion     -- generation completion script, it only works for unix-like OS
docker         -- generate Dockerfile
env            -- check or edit goctl environment
help        h  -- Shows a list of commands or help for one command
kube           -- generate kubernetes files
migrate        -- migrate from tal-tech to zeromicro
model          -- generate model code
rpc            -- generate rpc code
template       -- template operation
upgrade        -- upgrade goctl to latest version
1.3.6

本节内容仅合适 goctl 版别在 1.3.6 及之后的的主动补全设置参阅,1.3.6 之前的请越过此节内容

  1. 假如你是二进制八进制十进制十六进制转换接口crc错误计数从 1.3.5 晋级到 1.3.6 及今后,则需求履行如下指令来清除旧版别主动补全配索引失效置,这儿以 zsh 为例子,否则请越过这一步
# 修改 ~/.zshrc
$ vim ~/.zshrc
# 找到 PROG=goctl 地点行并删除
# source
$ source ~/.zshrc && rm .zcompdump*
# 重启终端
  1. 履行 goctl completion -h 检查运用说明,从运用协助android下载安装中能够检查到现在支撑 bash、fish 、powershell、zsh 4 种 shell 的主动补全。
$ goctl completion --help
Generate the autocompletion script for goctl for the specified shell.
See each sub-command's help for details on how to use the generated script.
Usage:
goctl completion [command]
Available Commands:
bash        Generate the autocompletion script for bash
fish        Generate the autocompletion script for fish
powershell  Generate the autocompletion script for powershell
zsh         Generate the autocompletion script for zsh
Flags:
-h, --help   help for completion
Use "goctl completion [command] --help" for more information about a command.
  1. 检查当时运用的 sh接口ell
$ echo $SHELL
/bin/zsh
  1. 因为当时接口类型运用的 zandroid下载sh,所以咱们来看一下 zs接口h 的主动补全设置协助
$ goctl completion zsh --help
Generate the autocompletion script for the zsh shell.
If shell completion is not already enabled in your environment you will need
to enable it.  You can execute the following once:
        echo "autoload -U compinit; compinit" >> ~/.zshrc
To load completions for every new session, execute once:
#### Linux:
        goctl completion zsh > "${fpath[1]}/_goctl"
#### macOS:
        goctl completion zsh > /usr/local/share/zsh/site-functions/_goctl
You will need to start a new shell for this setup to take effect.
Usage:
goctl completion zsh [flags]
Flags:
-h, --help              help for zsh
--no-descriptions   disable completion descriptions

从上文接口类型能够看出,依据操作体系的不同,自https域名动补全的设置方法也不一样,我这儿是 macOS,咱们履行一下对应的指令:

$ goctl completion zsh > /usr/local/share/zsh/site-functions/_goctl

咱们先重开一个二进制终端来试二进制一下:

# 键入 goctl 后按下 tab 键检查主动补全提示
$ goctl # tab
api         -- Generate api related files
bug         -- Report a bug
completion  -- Generate the autocompletion script for the specified shell
docker      -- Generate Dockerfile
env         -- Check or edit goctl environment
help        -- Help about any command
kube        -- Generate kubernetes files
migrate     -- Migrate from tal-tech to zeromicro
model       -- Generate model code
quickstart  -- quickly start a project
rpc         -- Generate rpc code
template    -- Template operation
upgrade     -- Upgrade goctl to latest version

常见过错

  1. go索引失效ctl Error: unknown flag: –generate-goctl-completion
  2. (eval):1: comm索引的效果and not founhttps和http的差异d: _goctl 依照 1.3.6 主动补全装备从头进行装备

goctl miandroid的drawable类grate

https认证助开发者从1.3.0 之前版别无缝搬迁到 1.3.0及HTTPS后的任意版别,假如运用的 go-zero 版别自身便是 1.3.0 及之后的,则无需做此操作。

为什么需求搬迁?

go-zero 在 1.3.0 版别做了安排变更,索引符号即用 zerom接口测验icro 替换本来的 tal-tech 安排索引称号。接口和索引是什么意思抽象二进制的运算规则类的差异

我现在有一个演示项目 awesomem接口卡igrate 是用旧版别 goctl 生成的,该项意图 go-zero 的 module 为

module awesomemigrate
go 1.18
require github.com/tal-tech/go-zero v1.2.5
...

假定咱们需求将该项意图 go-zero 晋级至接口主动化截止现在最新版别 1.3.3 ,要完索引的效果成项目从 tal-tech 到 zeromicro 的晋级 前需求确保 goctl 版别大于 v1.3.2,然索引符号后在履行 goctl 搬迁指令履行,假如 goctl 版别小于 v1.3.2,则需求晋级。

# 1. 检查当时 goctl 版别
$ goctl --version
goctl version 1.2.5 darwin/amd64
# 2. 因为 goctl 版别小于 v1.3.2,则需求晋级至最新,假如 goctl 版别现已是1.3.2及之后了,则能够不用晋级
$ go install github.com/zeromicro/go-zero/tools/goctl@latest
# 3. 检查一下搬迁指令运用协助
$ goctl migrate --help                                  
NAME:
goctl migrate - migrate from tal-tech to zeromicro
USAGE:
goctl migrate [command options] [arguments...]
DESCRIPTION:
migrate is a transition command to help users migrate their projects from tal-tech to zeromicro version
OPTIONS:
--verbose, -v    verbose enables extra logging
--version value  the target release version of github.com/zeromicro/go-zero to migrate
# 4. 进入待搬迁的项目下,履行搬迁指令
$ goctl migrate --version 1.3.3
# 5. 验证依靠是否存在问题
$ go test .
?       awesomemigrate  [no test files]

搬迁完结后,咱们再来看看 module 文件

module awesomemigrate
go 1.18
require github.com/zeromicro/go-zero v1.3.3
...

在 project 查找一下二进制计算器 tal-tech的匹配结果会发android/harmonyos接口现为0:

goctl env

goc索引页是哪一页tl eandroid/harmonyosnv 首要是用于环境检测、装置、环境参数操控等功用,除此之外还能够检查当时 goctl 的一些环境信Android息,以至于用户在遇到 bug 时能够依据此环境上报当时 goctl 处于的环境。

首要咱们看看其运android什么意思用说明

$ goctl env --help
NAME:
goctl env - check or edit goctl environment
USAGE:
goctl env command [command options] [arguments...]
COMMANDS:
install  goctl env installation
check    detect goctl env and dependency tools
OPTIONS:
--write value, -w value  edit goctl environment
--help, -h               show help

goctl env 支撑环境检查、参数修改、依靠检测装置二进制八进制十进制十六进制转换几个功用,咱们依次来看一下

1二进制的运算规矩. 环境检查

在不输入任何 flag 的状况下,则是查索引的效果看当时 goctl 环境。

$ goctl env
GOCTL_OS=darwin                        
GOCTL_ARCH=amd64
GOCTL_HOME=/Users/keson/.goctl
GOCTL_DEBUG=false
GOCTL_CACHE=/Users/keson/.goctl/cache
GOCTL_VERSION=1.3.5
PROTOC_VERSION=3.19.4
PROTOC_GEN_GO_VERSION=v1.27.1
PROTO_GEN_GO_GRPC_VERSION=1.2.0

以上https域名参数的大androidstudio装置教程概说明为

参数称号参数类型参数说明
GOCT二进制计算器L_OSSTR索引是什么意思ING当时操作体系,常见值有 darwin、接口和抽象类的区别windows、linux二进制接口自动化怎样算
GOCTL二进制_ARCHSTRING当时体系架构,常见值有 amd64, 386 等
GOCTL_HO接口测试用例设计MESTRING默以为 ~/.goctl
GOCTL_DEBUG二进制BO二进制换成十进制算法OLEAN是否开启 debug 形式,默以为 fal二进制的运算规则se,现在暂未运用,首要是 goctl 开发中或许用于操控调试形式
GOCTL_CACHESTRINGgoctl 缓存目接口英文https域名,首要缓存下载android下载的依靠 protoc、pro二进制的运算规矩toc-gen-go、二进制转八进制protoc-gen-go-grpc等
GOCandroid/harmonyosT接口crc错误计数L_VERSIONSTRING当时 goctl 版别
PRO接口自动化TOC_android的drawable类VERSIONSTRING当时 protoc 版别,如未装置则为空字符串
PRO索引超出了数组界限什么意思TOC_GEN_GO索引接口类型_VEAndroidRSI索引的作用ONSTRING二进制的运算规矩前 protoc-gen-go 版别https安全问题,如未装https认证置或许从github.com/golang/p索引失效的几种状况rotobuf 安二进制转八进制装版别为 v1.3.2 之前的则为空字符串
PRandroid下载OTO_GEN_GO接口测试_GRPC_VERSIONST索引超出矩阵维度RING当时 protoc-gen-go-grpc版别,如未装置则为空字符串
2. 修索引符号接口自动化参数

比如咱们将 G接口文档OCTL_DEBUG 修改为 true

# 修改前
$ goctl env | grep 'GOCTL_DEBUG'
GOCTL_DEBUG=false
# 修改 GOCTL_DEBUG 为 true
$ goctl env -w GOCTL_DEBUG=true
# 修改后
goctl env | grep 'GOCTL_DEBUG'
GOCTL_DEBUG=true
3.索引的索引失效优缺点 依靠检测/装置

咱们来检测一下我当时的依靠都是否装二进制置好,现在依靠检索引失效的几种情况测内容为protoc、protoc-gen-go、protoc-gehttps安全问题n-go-grpc

# 咱们来检查一下依靠装置
$ goctl env check --verbose                              
[goctl-env]: preparing to check env
[goctl-env]: looking up "protoc"
[goctl-env]: "protoc" is not found in PATH
[goctl-env]: looking up "protoc-gen-go"
[goctl-env]: "protoc-gen-go" is not found in PATH
[goctl-env]: looking up "protoc-gen-go-grpc"
[goctl-env]: "protoc-gen-go-grpc" is not found in PATH
[goctl-env]: check env finish, some dependencies is not found in PATH, you can execute
command 'goctl env check --install' to install it, for details, please execute command
'goctl env check --help'
# 装置依靠,装置依靠有2中方法
# 方法一
# $ goctl env check --install --force --verbose
# 方法二
$ goctl env install --verbose -f                       
[goctl-env]: preparing to check env
[goctl-env]: looking up "protoc"
[goctl-env]: "protoc" is not found in PATH
[goctl-env]: preparing to install "protoc"
[goctl-env]: "protoc" is already installed in "/Users/keson/go/bin/protoc"
[goctl-env]: looking up "protoc-gen-go"
[goctl-env]: "protoc-gen-go" is not found in PATH
[goctl-env]: preparing to install "protoc-gen-go"
[goctl-env]: "protoc-gen-go" is already installed in "/Users/keson/go/bin/protoc-gen-go"
[goctl-env]: looking up "protoc-gen-go-grpc"
[goctl-env]: "protoc-gen-go-grpc" is not found in PATH
[goctl-env]: preparing to install "protoc-gen-go-grpc"
[goctl-env]: "protoc-gen-go-grpc" is already installed in "/Users/keson/go/bin/protoc-gen-go-grpc"
[goctl-env]: congratulations! your goctl environment is ready!

goctl rpc

首要咱们来https域名看一下该指令的运用协助

goctl rpc -h
Generate rpc code
Usage:
goctl rpc [flags]
goctl rpc [command]
Available Commands:
new         Generate rpc demo service
protoc      Generate grpc code
template    Generate proto template
Flags:
--branch string   The branch of the remote repo, it does work with --remote
-h, --help            help for rpc
--home string     The goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
--o string        Output a sample proto file
--remote string   The remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory structure
Use "goctl rpc [command] --help" for more information about a command.

该指令提供了三个子指令,new 是快二进制转八进制速创立一个接口和androidstudio安装教程抽象类的差异 zrpc 服务,protoc 是依android的drawable类据 proto 描绘文件生成 zrpc 代码,而 template 则是快速生成Android一个 proto 模板,咱们将要点围绕 goctl rpc protoc 指令来展开,看看 goandroid平板电脑价格ctl rpc protoc 的运用说明:

goctl rpc protoc -h
Generate grpc code
Usage:
goctl rpc protoc [flags]
Examples:
goctl rpc protoc xx.proto --go_out=./pb --go-grpc_out=./pb --zrpc_out=.
Flags:
--branch string     The branch of the remote repo, it does work with --remote
-h, --help              help for protoc
--home string       The goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
--remote string     The remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory structure
--style string      The file naming format, see [https://github.com/zeromicro/go-zero/tree/master/tools/goctl/config/readme.md] (default "gozero")
-v, --verbose           Enable log output
--zrpc_out string   The zrpc output directory

goctl rpc protoc 究竟怎样运用,为什么示例里二进制亡者列车面有 –go_out、–go-grpc_out 参数,而检查 help 的时分却没有看到介绍?目HTTPS前咱们先这样了解,咱们先抛开 goctl,依据官二进制换成十进制算法方 protoc 生成 grpc 代码时的指令是什Android么?会用到哪些 flag,关于 zrpc 的代索引页是哪一页码生成,你能够了解为 goctl 生成 zrpc 仅仅接口卡在生成 grpc 代码指令的基础上加了 goctl rpc 前缀和一些 goctl 生成 zrpc 需求的 flag,而对接口英文接口类型于 protoc接口 及 插件 protoc-gen-go 、 p二进制rotoc-gen-gr接口自动化pc-go 的相关参数 g接口是什么oct索引图l 只二进制是做承继,没有必要显示的在 help 里边再描绘一遍,后面在分析源码时能够给咱们具体解说一些这块的接口文档规划和考虑,接下来咱们用一个例二进制子来https和http的差异https域名演示一下,索引失效的几种情况假定咱们有一个 grandroid下载eet.索引超出矩阵维度proto 文件,抛开 goctl ,咱们生成二进制 grpc 代码需求履行的指令如下:

假如接口卡不知道 grpc 代码是怎样生成Android的,这块主张参阅官方文档 grpc.io/

# 进入 greet.proto 地点目录
$ protoc greet.proto --go_out . --go-grpc_out .
$ tree
.
├── greet.proto
└── pb
├── greet.pb.go
└── greet_grpc.pb.go

那么依照上文对 goctl rpc protoc 的介绍,咱们生成 zrpc 代码的指令则应该二进制转换器

# 这儿多了一个 --zrpc_out 用于指定 zrpc 代码的输出目录
$ goctl rpc protoc greet.proto --go_out=. --go-grpc_out=. --zrpc_out=. --verbose
[goctl-env]: preparing to check env
[goctl-env]: looking up "protoc"
[goctl-env]: "protoc" is installed
[goctl-env]: looking up "protoc-gen-go"
[goctl-env]: "protoc-gen-go" is installed
[goctl-env]: looking up "protoc-gen-go-grpc"
[goctl-env]: "protoc-gen-go-grpc" is installed
[goctl-env]: congratulations! your goctl environment is ready!
[command]: protoc greet.proto --go_out . --go-grpc_out .
Done.
$ tree
.
├── etc
│   └── greet.yaml
├── go.mod
├── greet
│   └── greet.go
├── greet.go
├── greet.proto
├── internal
│   ├── config
│   │   └── config.go
│   ├── logic
│   │   └── pinglogic.go
│   ├── server
│   │   └── greetserver.go
│   └── svc
│       └── servicecontext.go
└── pb
├── greet.pb.go
└── greet_grpc.pb.go
8 directories, 11 files

假如在生成代码时需求输出日志,能够加 –verbose 来显示日志。

goctl rpc protoc 在生成 zrpc 代码时会先接口类型对你的环境依靠进行检测,假如没有装置则会主动装置依靠再生成代码。

4. 修改器插件接口类型

为了进步咱们对 zerohttps安全问题-api 文件的编写功率,接口crc错误计数咱们分别对 intellij 和 vscode 提供了相应的修改器插件, inthttps安全问题ellij 插索引超出矩阵维度件介绍及运用请参阅 github.com/zeromicro/g… vscode 插件介绍及运用请参接口crc错误计数阅 github.com/zeromicro/g…

三、goctl 运用中遇到的问题

goctl 从最初的一个功用 rpc proxhttps协议android什么意思y 到当时版别(v1android手机.3.5) 现已拥有13个一级指令和近3接口文档0个二级指令, 期间 goctl 做HTTPS了一些调整,并且https域名,gco索引的效果tl 自身的行进脚步也非常快,他更像是在摸索中行进,朝着更快,更好用的方向开展,因而在迭代的路上,goctl 会显得有些不稳定,咱们兴许也遇到许多问题,这儿大约总结一下咱们在社区中反馈比较多的一些问题来共享一下。

1. 38索引超出了数组界限什么意思6 架构上装置 goctl 失利!

描绘:antlr 生成的源码中,没有对 386 架构的 uint 的索引失效的几种情况鸿沟值进行很android的drawable类好的处理,导致鸿沟溢出

修正版别:v1.接口3.HTTPS3

2. grpc 究竟装置什么版别插件?

描绘:了解 grpc 的人应该都知道,生成 grpc 代码的插件 protoc-gen-go 有两个库房在保护,有3 个装置来源,2个保护库房分别是:

# 1. golang
# github.com/golang/protobuf/protoc-gen-go
# 2. protocolbuffers
# github.com/protocolbuffers/protobuf-go/cmd/protoc-gen-go

三个装置来源是

# 1. golang 保护的库房,现在已不引荐运用
# github.com/golang/protobuf/protoc-gen-go
# 2. protocolbuffers 保护的,现在引荐运用的
# github.com/protocolbuffers/protobuf-go/cmd/protoc-gen-go
# 3. goolge 装置,这其实和第二种装置的是一个二进制,他的源码便是protocolbuffers 保护的相同库房
# google.golang.org/protobuf/cmd/protoc-gen-go

在 vandroid下载.1.3.4前,假如运用 goctl rpc proto 生成 zrpc 代码则主张装接口是什么置旧版别的插件,即 golang 保护的,因而该指令生二进制转八进制成 zrpc 代码索引失效是 goctl 为了用户生成指令的简略,做了很厚的索引的优缺点二进制装,但https安全问题随之带来的问题便是难兼容,因而该指令已不Android引荐接口自动化运用。索引超出矩阵维度

在v.1.3.4及今后,没有对 pro接口测验toc-gen-go 做限接口和抽象类的差异制,用户能够自由挑选不同的来源进行装置,但主张仍是装置 pro接口测试toc索引的效果olbuffer 保护的版别(官方文档现已替接口文档换为这个),并且必须要装置protoc二进制-gen-grpc-go 插件,这样做的意图是跟着 grpc 官方走,二进制的运算规矩不过用户不用有太大二进制换成十进制算法的心思担负,一下装置这么多依靠,很费二进制八进制十进制十六进制转换事,goctl 都现已帮你完结了,你只需运用 goct接口是什么l rpc protoc 生成代码时会主动检测依靠并安接口装。

综上所述,主张咱们还在运用该指令的接口用户尽早用 goctl rpc protoc 替代。

3. 为什么 Windows 上生成 api/zr接口和抽象类的差异pc索引的优缺点 代码时,总是提示 The system canno二进制亡者列车t find the path specified 类似过错?

goctl.exe api go -api test.api -dir .
Stat : The system cannot find the path specified.

描绘:发生该原因是因为 go landroid平板电脑价格ist -json -m 获取 go module 时拿到接口类型的是一个固定索引超出矩阵维度值command-line-argu索引的效果ments,该问题现已在 github.com/zer索引是什么意思omicro/g… 进二进制计算器行修正https域名,版别将在 v1.3.6 收效。

4. No help接口测试 topic ‘proto’

描绘:该指令在 v1.3.4 现已移除,用 goctl rpc proto二进制转化为十进制c 替代二进制计算器

5. zrpc 生成代码时报 go_package 错接口测验用例规划

protoc-gen-go: unable to determine Go import path for "greet.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.
--go_out: protoc-gen-go: Plugin failed with status code 1.

6.索引 zrpc 生成代码时指定了 pb 的输出目录为android/harmonyos当时服务 main 目录

the output of pb.go and _grpc.pb.go must not be the same with --zrpc_out:
pb output: /Users/keson/workspace/awesome-goctl/zwesome-zrpc/pb_in_main
zrpc out: /Users/keson/workspace/awesome-goctl/zwesome-zrpc/pb_in_main

7. 为什么我的代码生成二进制亡者列车的 pb client(不)接口是什么带 clie索引符号nt 标志?

这是旧版别 goctl rp索引是什么意思c p二进制亡者列车roto 生成 zrpc 代接口测试码时才索引图有这个问题,现在现已移除了该指令。

8. 为什么我生成的目录结构和文档二进制计算器演示不一样?

关于 goctl rpc protoc 生成 zrpc 代码的目录结构,总的结构上是不会存在差异的,唯一存在差异的是 pb 的输出目录,这个取决于你指二进制转化为十进制定的参数来操控,操控 pb 输出目录的因素有 go接口英文_optgo-grpc_optgo_pack接口英文age ,概况可参阅 《Protocol Buffers: Go Generated Code》。

9.索引的效果 为什么我装置了 goctl 修改器插接口自动化件仍是不能高亮

打开 Goland 的设置,查找 FileTypes 设置 api 文件后二进制怎样算缀即可。

项目地址

github.com/二进制八进制十进制十六进制转换zeromicro/g…

欢迎运用 go-zerostar 支撑咱们!

微信沟通群

关注『微服务实践』大众号并点击 沟通群 获取二进制换成十进制算法社区群二维码。

发表评论

提供最优质的资源集合

立即查看 了解详情