导入github管理的go包

问题描述

我是新来的模块建造者。我想做的是使用其他开发人员可以在其go代码中使用的常用方法创建一个go库。

因此,我首先在内部github中创建了一个仓库https://internalgithub/<org>/lib-go.git

回购结构如下

$  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
}

该代码在我的组织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.gogorm(使用gorm.go

对于您的情况,如果您只想为最常用的功能创建一个集合,则可以添加一个软件包utils并将实现放入utils.go或其他xxx.go文件中

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...