首页 > 解决方案 > 在 go 项目中将 git 子模块保存在哪里?

问题描述

我想在我的 go 项目中添加一个子模块。

子模块将包含一些.proto文件和一些 go 文件。我将使用 protos 使用我的 Makefile 生成 grpc-gateway 文件,它与 repo 中的 go 文件具有相同的包。包含这些 protos 的 repo 不是我的,其他人正在开发它。我不会提交这些生成的网关文件。

golang 项目中的此类文件是否有任何特定结构?我应该将它们保存在 pkg 目录中吗?

我的项目中当前有构建、配置、模板的三个文件夹。

标签: gitgogit-submodules

解决方案


您可以将它们保存在pkg目录中,也许在pkg/proto.

生成的 go 文件的包名称将出现在文件的go_package属性中.proto。例如,

option go_package = "external/api/messages";

然后编译后,go文件中的包名将是

package messages

这是文件夹结构

$ tree
.
`-- pkg
    `-- proto
        `-- messages
            |-- messages.pb.go
            `-- messages.proto

为了导入它,您必须更新您的go.mod文件

replace external/api v0.0.0 => ./pkg/proto

之后,您可以使用

import (
    "external/api/messages"
)

推荐阅读