如何解决导入github管理的go包
我是新来的模块建造者。我想做的是使用其他开发人员可以在其go代码中使用的常用方法创建一个go库。
因此,我首先在内部github中创建了一个仓库https://internalgithub/<org>/lib-go.git
回购结构如下
$ tree
.
├── README.md
├── go.mod
├── go.sum
└── 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
}
该代码在我的组织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
}
即使进行了这些更改,我仍然遇到相同的错误
解决方法
将软件包更改为lib-go
,然后删除main
函数。 Read this进一步详细介绍了go模块
如果您编写自己的库,请不要添加main
软件包。
您会看到一些流行的golang库,例如go-gin(使用gin.go
,gorm(使用gorm.go
)
对于您的情况,如果您只想为最常用的功能创建一个集合,则可以添加一个软件包utils
并将实现放入utils.go
或其他xxx.go
文件中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。