版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
第一步:go安装和环境变量配置
- 下载:go1.12.9.windows-amd64.msi或最新稳定版本,
下载路径: https://studygolang.com/dl
直接运行,默认安装,或自定义安装路径 - 配置环境变量,Go语言需要配置GOROOT和Path两个环境变量:GOROOT和GOPATH
默认安装时,环境变量会自动配置,属性如下:
变量名:GOROOT 变量值: C:\Go
变量名:Path 变量值: C:\Go\bin
自定义安装路径参照以上进行配置 - Go工作目录GOPATH配置,此为后续代码目录,GOPATH是作为编译后二进制的存放目的
地和import包时的搜索路径 。GOPATH之下主要包含三个目录: bin、pkg、src:
bin目录主要存放可执行文件;
pkg目录存放编译好的库文件, 主要是*.a文件;
src目录下主要存放go的源文件。
新建系统变量GOPATH,将其指向代码目录,我的代码目录是D:\LocalBase\Go,自定义
实例: 变量名:GOPATH 变量值:D:\LocalBase\Go - 验证变量是否设置成功,cmd窗口,输入go env查看,如下:
……
set GOPATH=D:\LocalBase\Go
……
set GOROOT=C:\Go
- 验证GO安装是否成功,编写第一个GO程序(没有编辑器的情况下,可先写到txt中,再改后缀名):
创建hello.go文件并编辑内容如下:保存后打开cmd窗口,进入到该目录,执行go run hello.go,看到打印结果,证明go安装成功
package main
import "fmt"
func main() {
fmt.Printf("Hello,world\n")
}
第二步:procbuf下载和配置
- 下载protoc-3.9.1-win64.zip或最新稳定版本
下载路径:https://github.com/protocolbuffers/protobuf/releases - 在GOPATH路径下新建,src、bin、pkg文件夹,以上提到这三个目录,参照第一步的GOPATH配置说明
- 解压protoc-3.9.1-win64.zip,将解压出来的bin目录下的protoc.exe 复制到GOPATH/bin目录下
- 在系统环境变量中添加%GOPATH%\bin
验证:在cmd窗口输入protoc,正常打印 - 在cmd 中运行 go get -u github.com/golang/protobuf/protoc-gen-go 获取protobuf的编译器插件 protoc-gen-go
验证插件是否下载完成:在GOPATH的bin目录下出现protoc-gen-go.exe
第三步:安装grpc
- 如果翻墙,可以直接执行go get -u google.golang.org/grpc
- 未翻墙的情况下,从git上克隆grpc的依赖包到GOPATH目录下:
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
cd $GOPATH/src/
go install google.golang.org/grpc
- 如果出现报错:error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054,可能原因是网络很差或缓存小,较大可能是网络不好。
解决方式1:修改提交缓存大小为500M,或更大
git config --global http.postBuffer 524288000
解决方式2:配置git的最低速度和最低速度时间:global配置对当前用户生效,如果需要对所有用户生效,则用–system
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999 单位 秒
解决方式3:换个好点的网络或翻墙(这个应该放到方式1的位置,首先进行尝试)
---------------------------------------------------End---------------------------------------------------------------