go - 导入一个 github 托管的 go 包

标签 go go-modules

我是新来的模块构建。我想做的是创建一个带有常用方法的 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/

相关文章:

go - "..."未定义("..."类型没有字段或方法 "...")

go - 包含需要清理的对象的包

mongodb - Go Mongo 仅更新非零值

go build 一直提示 : go. mod 有 post-v0 模块路径

visual-studio-code - 如何在 vscode 中正确使用 go 模块?

validation - 检查 POST 参数的更好方法?

go - 运行 go build 时出错。带有日志存储库

谷歌存储 : how to check if a bucket exists

go.mod 使用没有标签的模块