加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为什么我不能在golang中为我的库添加一个main?

发布时间:2020-12-16 09:27:19 所属栏目:大数据 来源:网络整理
导读:我无法实现应该是一项简单的任务.我理解代码组织的 GitHub模型(即库存仓库和使用库的应用程序仓库).我觉得这很棒.但我经常发现我希望mylib在一个main.go文件中捆绑一个简单的可执行文件. main.go应该是package main,应该导入mylib.换句话说,它应该是如何构建
我无法实现应该是一项简单的任务.我理解代码组织的 GitHub模型(即库存仓库和使用库的应用程序仓库).我觉得这很棒.但我经常发现我希望mylib在一个main.go文件中捆绑一个简单的可执行文件. main.go应该是package main,应该导入mylib.换句话说,它应该是如何构建使用此库的应用程序的确切文档.

我的观点是,因为提供一个包装你的库的简单命令行界面通常足够方便,所以应该有一个简单的方法来做到这一点,而不必再做一个回购,golang应该有所帮助.

我喜欢以下内容:

$GOPATH/src/github.com/me/mylib
    mylib.go
    mylib_also.go
    main.go

其中mylib是库(包mylib),main.go是包main,在运行go install时生成bin / mylib和pkg / mylib.a.

main.go应该导入“github.com/me/mylib”(如果我现在这样做,我会得到周期性的导入错误)或者去了解发生了什么,因为这个功能应该被内置并且repo中的一个main.go生成执行官.可能需要导入(并且丢弃周期性错误)是更好的方法.

现在,我必须这样做

$GOPATH/src/github.com/me/mylib
    mylib/
        mylib.go
    main.go

所以我必须导入github.com/me/mylib/mylib这很荒谬.

总之,go install应该允许一个包的特殊情况和一个导入包的main,并提供一个简单的cli来演示包API. GitHub模型促进了两个回购,但它应该很容易在一个简单的clis!

解决方法

每个文件夹不能有多个包. Go在包级别而不是文件级别上运行.

在这种情况下的惯例 – 消耗你的库的二进制文件 – 是用你的包主要创建一个cmd文件夹 – 即按照https://github.com/bradfitz/camlistore/tree/master/cmd或https://github.com/boltdb/bolt

在你的情况下,这将是:

$GOPATH/src/github.com/me/mylib
    mylib/
      mylib.go
      README.md
      cmd/
        your-lib-tool/
          main.go

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读