0

我正在将 dep 项目迁移到 go 模块中,并且该项目中的一些 Go 文件导入了 proto 文件,但是当我执行时go mod tidy,它说找不到 proto 文件所在的包。项目结构:

version_service
   proto
     authentication
       authentication.proto
     version
       version.proto
 repository.go

我在repository.go中像这样导入

pb "proto/version"

我有这个:

proto/version: package proto/version is not in GOROOT 

如何导入这些文件?

4

1 回答 1

-1

GOROOT 是用来“存储” Go 原生包的,所以你不应该将它用于你自己的包,相反,你需要使用Go Modules

您几乎可以将 Go 模块解释为您的 Go 项目的本机包管理器,例如,在您的项目中具有以下结构:

version_service
  proto
   authentication
     authentication.proto
   version
     version.proto
  repository.go

在您的外壳中,您可以使用 启动 Go Modules go mod init package.name,在您的情况下package.name可以是proto ,因此使用您的项目根目录作为参考,您可以使用proto/version导入包

package authentication

import (
   pb "proto/version"
)

func main() {
    pb.Foo().Bar()

}
于 2020-12-29T14:48:58.730 回答