我是新来的模块构建。我想做的是创建一个带有常用方法的 go 库,其他开发人员可以在他们的 go 代码中使用。
所以首先在我的内部 github 中,我创建了一个 repo https://internalgithub/<org>/lib-go.git
repo 结构看起来像
$ tree
.
├── README.md
├── go.mod
├── go.sum
└── main.go
和 main.go
文件有以下内容package main
import (
"flag"
"os"
"path/filepath"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
func main() {}
func someFunctinDevelopersNeed(cluster bool) kubernetes.Interface {
if cluster == false {
var kubeconfig *string
.
.
return clientset
}
该代码在我的 org github 的 master 分支中可用。下一个任务是编写调用此库并依次调用方法
someFunctinDevelopersNeed
的代码。所以在我的应用程序代码中,我的 main.go 看起来像
package main
import "internalgithub/<org>/lib-go"
func main() {
clientset = someFunctinDevelopersNeed()
.
.
}
但是当我尝试做 go get -t -v internalgithub/<org>/lib-go
,我得到runtime.main_main·f: function main is undeclared in the main package
有什么我错过的吗?编辑:
根据建议,现在我做了以下
$ tree
.
├── README.md
├── go.mod
├── go.sum
└── kubernetes
└── kubernetes.go
和kubernetes.go
以。。开始package kubernetes
import (
"flag"
"os"
"path/filepath"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
func someFunctinDevelopersNeed(cluster bool) kubernetes.Interface {
if cluster == false {
var kubeconfig *string
.
.
return clientset
}
即使进行了这些更改,我也遇到了同样的错误
最佳答案
如果您编写自己的库,请不要添加 main
包裹。
你可以看到一些流行的 golang 库,比如 go-gin (使用 gin.go
),gorm (使用 gorm.go
)
对于您的情况,如果您只想为最常用的功能创建一个集合,您可以添加一个包 utils
并将您的实现放入utils.go
或其他xxx.go
文件
关于go - 导入一个 github 托管的 go 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000627/