我花了好几个小时尝试阅读有关如何在Golang中使用简单原型文件的博客。我生成了.pb.go文件。所有的互联网示例都是从一些随机"github...
网址导入进行原型导入的。我无法找到有关如何导入与我的.go文件或diff目录在同一目录中的简单原型文件的任何示例。如何使用本地文件系统中的原型文件。
go build hello.go
hello.go:5:2: cannot find package "customer" in any of:
/usr/local/go/src/customer (from $GOROOT)
/Users/myhomedir/go/src/customer (from $GOPATH)
$ SOME_DIR / customer
中hello.go
的提示
package main
import (
"fmt"
pb "customer"
)
func main() {
fmt.Println("hello test message\n")
}
customer.proto
syntax = "proto3";
package customer;
// The Customer service definition.
service Customer {
// Get all Customers with filter - A server-to-client streaming RPC.
rpc GetCustomers(CustomerFilter) returns (stream CustomerRequest) {}
// Create a new Customer - A simple RPC
rpc CreateCustomer (CustomerRequest) returns (CustomerResponse) {}
}
// Request message for creating a new customer
message CustomerRequest {
int32 id = 1; // Unique ID number for a Customer.
string name = 2;
string email = 3;
string phone= 4;
message Address {
string street = 1;
string city = 2;
string state = 3;
string zip = 4;
bool isShippingAddress = 5;
}
repeated Address addresses = 5;
}
message CustomerResponse {
int32 id = 1;
bool success = 2;
}
message CustomerFilter {
string keyword = 1;
}
答案 0 :(得分:1)
只需将客户代码放在一个目录中,然后像打包一样将其导入
package main
import "$SOME_DIR/customer"
答案 1 :(得分:1)
正如已经提到的一些评论一样,您必须像导入其他文件一样导入customer
文件-带有完整的类似url的路径。即使您的main.go
与依赖项位于同一目录中也是如此。
每个人都有一种特定的方式来管理go代码依赖关系,您可以在此处阅读有关它的信息:
遵循一个如何组织工作空间的通用标准确实感到很奇怪(至少对我来说,这是我刚开始使用go时所做的)-但是由于您遇到了像您这样的错误,如果您不遵循它们的话;只是尝试做。
一个不错的起点(在您阅读了“如何编写go代码”之后)实际上就是您收到的错误消息。如果您更改导入语句/目录结构,它将更改,并且将帮助您在import ...
语句中指定依赖项的完整路径。