我正在尝试使用此处所述的六边形架构来制作我的 Go 项目。在我的项目中,我使用的是protoc从.proto文件生成的 gRPC 通信。
目录结构:
|- grpc.proto
|-internal
|-core
|-domain
|-services
|- grpcprotocol
我的grpc.proto文件有 go_package 选项,它指向我的 Go 项目中的特定目录
syntax = "proto3";
option go_package = "github.com/myuser/myrepo/internal/core/services/grpcprotocol";
...
使用protoc --go_out=internal/core/domain --go_opt=paths=source_relative --go-grpc_out=internal/core/services/grpcprotocol --go-grpc_opt=paths=source_relative ports.proto我能够在internal/core/domain目录中生成grpc.pb.go文件,在internal /core/services/grpcprotocol目录中生成grpc_grpc.pb.go文件。
但是,grpc.pb.go有一个名为 go 的包grpcprotocol,而它应该有一个名为的包domain(我还使用在单独的 Go 文件中定义的其他类型)。grpc_grpc.pb.go文件也有代码使用 grpc.pb.go 中定义的类型而不导入(它把它当作是在同一个包中定义的)。
是否可以将这两个文件拆分为单独的 Go 包并强制执行grpc_grpc.pb.go中的代码以从域目录导入类型,而不是将它们视为在同一包中定义的类型?
POPMUISE
相关分类