VSCode 关于Go语言引用第三库(例如protobuf)

本文介绍了如何在Go环境中安装和配置protobuf,以及如何使用protoc-gen-go编译proto文件为Go代码。详细步骤包括安装protobuf、生成protoc-gen-go.exe、编写proto文件、生成Go代码、管理go.mod和go.sum文件,最后展示了如何在Go程序中使用生成的代码进行序列化和反序列化操作。
摘要由CSDN通过智能技术生成

要注意第三库的版本,在自己模块中引入第三方库的模块,写go.mod文件

        go mod init 模块名字生成go.mod文件

需要写上 require  第三库  版本

之后进入引入第三库的模块的目录,进入cmd窗口,进行go mod tidy 命令,生成go.sum文件。

下面是引入第三库protobuf的例子

第一步,安转protobuf,链接https://github.com/protocolbuffers/protobuf/releases

第二步,生成将proto文件转化成go文件的程序protoc-gen-go.exe

        1.命令 go get google.golang.org/protobuf

                注意 环境 GO111MODULE=on 

                go env查看,不是的话go env -w  GO111MODULE=on 修改

        2.进入该目录下的cmd下的protoc-gen-go,进入cmd,进行go install 命令编译

        

        之后编译生成protoc-gen-go.exe程序,自动放在GOBIN目录下。      

至此protobuf环境已经准备结束。

第三,编写proto文件

syntax = "proto3";

option go_package="./;pb";

message Person {
    string name = 1;
    int32 age = 2;
    repeated string emails = 3;
    repeated PhoneNumber phones = 4;
}
 
message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
}

enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
}

第四步 进入该文件所在目录,输入protoc --go_out=. *.proto,生成对应go文件

第五步,go.mod文件输入所需第三库的名字、版本 

第六步,生成该模块main文件的 go.mod 文件  命令 go mod init 模块名字

main.go

package main

import (
	"fmt"

	"pb"

	"google.golang.org/protobuf/proto"

)

func main() {
	person := &pb.Person{
		Name:   "cc",
		Age:    88,
		Emails: []string{"1@qq.com", "2@163.com"},
		Phones: []*pb.PhoneNumber{
			&pb.PhoneNumber{
				Number: "1",
				Type:   pb.PhoneType_HOME,
			},
			&pb.PhoneNumber{
				Number: "2",
				Type:   pb.PhoneType_MOBILE,
			},
			&pb.PhoneNumber{
				Number: "3",
				Type:   pb.PhoneType_WORK,
			},
		},
	}

	//marshal:  obj---[]byte
	data, err := proto.Marshal(person)
	if err != nil {
		fmt.Println(err)
	}

	//unmarshal : []byte---obj
	newPersonObj := &pb.Person{}
	err = proto.Unmarshal(data, newPersonObj)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println(newPersonObj)
}

第六步,在main.go所在主目录下 输入命令go mod tidy,生成 go.sum

第七步,运行项目即可

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值