Loading

win11、wsl2 ubuntu 22.04下go开发

安装go 1.19.3

1.下载源码包、解压

tar zxvf go1.19.3.linux-amd64.tar.gz
cp -r ./go /home/chq/soft

2.设置工作目录

mkdir /home/chq/go
mkdir /home/chq/projects

3.配置变量

export GOROOT=/home/chq/soft/go
export GOPATH=/home/chq/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY="https://goproxy.io,direct"
source ~/.zshrc

4.vscode 下载Remote - WSL拓展
在启动的wsl虚拟机内,输入

code . 

启动vscode,就可以管理wsl2 内go环境和vscode通信了

安装protoc与protoc-gen-go(待完善)

Protobuf(Protocol Buffer)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。(也就是说,当服务器端使用go实现,注册了api;那么客户端是python实现,通过Protobuf也可以实现远程访问)

  1. protoc是Protobuf编译器,可以从github上直接下载源码,下载地址:https://github.com/protocolbuffers/protobuf/tags
    这里选择protoc-3.7.1-linux-x86_64.zip,可以直接解压到/usr/local/目录下,执行一下命令:
$ unzip protoc-3.7.1-linux-x86_64.zip -d /usr/local/

之后,/usr/local/bin 下面就会出现protoc

$ protoc --version
libprotoc 3.7.1
  1. protoc-gen-go是go版本的Protobuf编译器插件,能访问网络的情况下,只需要在某个项目下运行

执行命令,便可以在$GOPATH/bin目录下发现这个工具

go install github.com/golang/protobuf/protoc-gen-go@latest

当Linux系统无法访问网络时:首先在github.com/golang/protobuf上下载protoc-gen-go和proto,(最好将其放在$GOPATH/src目录下)然后进入protoc-gen-go目录,执行go build、go install即可在$GOPATH/bin目录下发现这个工具。前提是必须首先将$GOPATH/bin路径添加到环境变量$PATH中。

测试

  1. 创建项目
mkdir go-demo
go mod init go-demo
  1. 编写test.proto文件
// 指定版本
syntax = "proto3";
// 包名
package pb;
指定包名的位置改成:
option go_package = "./pb";

// 课程
message Course{
    int32 id = 1;
    string name = 2;
}
// 学生
message Student{
    int32 id = 1;
    string name = 2;
    repeated Course courses = 3;
}

生成文件命令:protoc --go_out=. test.proto , 编写main文件
报错:

➜  go-demo protoc --go_out=. test.proto
protoc-gen-go: unable to determine Go import path for "test.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.

修改test.proto文件,原因是protoc-gen-go版本过高,对源proto文件需要添加包名,在包名后添加一行:
指定包名的位置改成:
option go_package = "./pb";

之后重新执行命令: protoc --go_out=. test.proto

posted @ 2024-07-15 11:41  集君  阅读(83)  评论(0编辑  收藏  举报