golang:github.com/mwitkow/go-proto-validators/validator.proto 文件在GoLand中不识别

练习《Go语言高级编程》中4.6.1验证器的案例时,代码如下:

syntax = "proto3";

package main;

import "github.com/mwitkow/go-proto-validators/validator.proto";

message Message {
  string important_string = 1 [(validator.field) = {regex: "^[a-z]{2,5}$"}];
  int32 age = 2 [(validator.field) = {int_gt: 0, int_lt: 100}];
}

发现导入的validator.proto文件不识别,并且双引号内容红色。

import "github.com/mwitkow/go-proto-validators/validator.proto";

执行案例中命令,

protoc 
    --proto_path=${GOPATH}/src 
    --proto_path=${GOPATH}/src/github.com/google/protobuf/src 
    --proto_path=. 
    --govalidators_out=. --go_out=plugins=grpc:. helloworld.proto

提示错误信息:

E:\workspace_go\gotest\src\main\chapter04\th03\validators>protoc --proto_path=${GOPATH}/src --proto_path=${GOPATH}/src/github.com/google/protobuf/src --proto_path=. --govalidators_out=. --go_out=plugins=grp
c:. helloworld.proto
${GOPATH}/src: warning: directory does not exist.
${GOPATH}/src/github.com/google/protobuf/src: warning: directory does not exist.
github.com/mwitkow/go-proto-validators/validator.proto: File not found.
helloworld.proto:5:1: Import "github.com/mwitkow/go-proto-validators/validator.proto" was not found or had errors.

首先此次执行有两处问题,一处由于没有仔细看文档提示,犯了低级错误,提示如下:

在 windows 系统中需要替换 ${GOPATH} 为 %GOPATH% 

另外一处,由于网络原因使用 go get / git clone 命令没有下载下来,直接下载zip包,进行解压到 %GOPATH%/src/github.com/mwitkow 下面,部分插件未下载。需要执行 go mod 命令,外执行过后,还提示“github.com/mwitkow/go-proto-validators/validator.proto: File not found.”,打开“github.com/mwitkow/go-proto-validators/validator.proto”文件,代码如下:

golang:github.com/mwitkow/go-proto-validators/validator.proto 文件在GoLand中不识别_第1张图片

引入了“google/protobuf/descriptor.proto”文件,此文件需要将“ https://github.com/protocolbuffers/protobuf/” 中的 src/google 文件夹移动到 %GOPATH%/src/google/下面,移动过后,直接执行命令就可以了。

总结如下:

1.执行 go mod 命令

2.“ https://github.com/protocolbuffers/protobuf/” 中的 src/google 文件夹移动到 %GOPATH%/src/google/下面

3.正确执行命令

protoc 
    --proto_path=%GOPATH%/src 
    --proto_path=%GOPATH%/src/github.com/google/protobuf/src 
    --proto_path=. --govalidators_out=. --go_out=plugins=grpc:. helloworld.proto


 

 

 

你可能感兴趣的:(golang)