git - 将 git 子模块保存在 go 项目中的什么地方?

标签 git go git-submodules

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

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

golang项目中这样的文件有没有特定的结构?我应该将它们保存在 pkg 目录中吗?

我的项目中目前有 build、configs、templates 三个文件夹。

最佳答案

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

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

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"
)

关于git - 将 git 子模块保存在 go 项目中的什么地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275144/

相关文章:

git - 如何使用子模块和 n 层 git 存储库策略

git - 使用 Capistrano 3 部署 git 子模块

git 状态显示致命 : bad object HEAD

git checkout 新分支

sql - 当不涉及并发线程时如何修复 "database is locked"?戈兰、sqlite3

go - 简单如果不工作 go 模板

git - 一次提交上的多个构建

git - 在 PhpStorm 中,我可以只存储部分更改吗?

google-app-engine - Go App Engine 嵌套对象未存储在 Cloud Datastore 中

ssh - 使用 SSH 在 Azure Pipeline 中 checkout git 子模块