gpt4 book ai didi

go - 如何构建多语言存储库以与 golang 合理配合?

转载 作者:行者123 更新时间:2023-12-03 01:29:49 29 4
gpt4 key购买 nike

我想创建一个几乎没有语言绑定(bind)的库,其中之一是 golang。将所有内容都放在一个存储库中是有意义的,因为例如测试数据可以在它们之间共享。但我不确定如何构建它。我试过的是

+   $ tree .
.
└── go
├── go.mod
└── foo.go

1 directory, 2 files

+ $ cat go/go.mod
module github.com/bar/foo/go

go 1.13

+ $ cat go/foo.go
package foo

func Foo() int {
return 1;
}

然后我尝试使用它

+:( $ cat test.go
package main

import (
"github.com/bar/foo/go"
)

func main() {
fmt.Println(foo.Foo())
}

但是失败了

+   $ go run ./test.go
go: finding github.com/bar/foo latest
build command-line-arguments: cannot load github.com/bar/foo/go: module github.com/bar/foo@latest (v0.0.0-20191019071519-05aedbdfa600) found, but does not contain package github.com/bar/foo/go

我对 golang 还很陌生,所以有人可以建议一下这样的项目通常是如何构建的吗?

最佳答案

首先,在大多数情况下,以编程语言来命名包并不是一个好主意。该包实际上有什么作用?请记住,文档和包布局应针对用户进行优化。

对于多部分项目,我个人倾向于建立一个新的组织,比如 foo 并为第一部分创建一个 bar 存储库,比如用 Java 编写的服务器,然后可以通过 https://github.com/foo/bar 访问。接下来,对于用 Go 编写的客户端,您设置下一个存储库 baz,然后可以通过 https://github.com/foo/baz 访问它。 - 你的 go 模块。

最后但并非最不重要的一点是,您可以拥有一个“分发”存储库,它将组织的项目放入 CI 管道中以确保互操作性。

这种方法有多种优点,恕我直言:您可以让用户更轻松地探索生态系统,存储库变得足够独立,同时仍被组织捆绑在一起,并且单个存储库变得更小。

关于go - 如何构建多语言存储库以与 golang 合理配合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461520/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com