**已关闭。**此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
22天前关闭
Improve this question的
我是一个经验丰富的开发人员,但新去。我找到的文档并不简单。我已经习惯了Java、Scala和Python,但GO对我来说是新的。我正在尝试在GO中创建一个库,并且我正在创建项目结构的第一步。当我运行go build
时,它告诉我“在...中没有GO文件”。这是一个纯库,我不想要一个主文件。有没有一种方法可以实现这一点,或者无论如何都需要一个主文件?
查找文档并查看示例项目。编辑。我确实有文件,我已经运行了一些测试与一个主文件到位。但是一旦我删除了主文件,我就有点不知道如何正确地构建它了。
2条答案
按热度按时间nwlls2ji1#
这取决于你对“图书馆”的定义。如果你指的是一个预编译的二进制对象,比如C中的
.a
或.so
库,那么Go实际上并没有这样的东西。依赖包作为源代码下载,然后编译成二进制文件。如果你的意思是“一个我可以导入并在其他项目中使用的模块”……你有没有看过其他模块是如何结构化的?以
yaml
模块为例,我们可以看到:main.go
go mod tidy; go build
,则go build
命令将正常运行。例如,我可以创建一个具有以下结构的模块
mymodule-dep
:字符串
其中
go.mod
具有:型
functions.go
有:型
我可以通过导入到另一个项目来使用该模块,如下所示:
型
这里假设存在一个存储库https://github.com/larsks/mymodule-dep(现在确实存在)。
如果我构建了上面的代码,运行它会产生:
型
oxf4rvwz2#
通常您不需要构建GO库。
您可以将库创建为GO文件,测试它并将源代码发布到GitHub。发布的代码在Git(通常是GitHub)中有版本,客户端可以选择使用哪个版本的库。
使用该库的客户端应用程序有一个
main.go
文件,您可以在该文件中运行go build
命令。Go没有像Java或.NET这样的中间格式,也不使用二进制可执行格式的库。相反,GO以GO代码的形式使用依赖项。这类似于Node和Python,除了Go编译最终代码而不解释它。