为什么我不能在golang中为我的库添加一个main?
我无法实现应该是一项简单的任务.我理解代码组织的
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |