登录
首页 >  Golang >  Go问答

无 main 函数时的 GO 库构建指南

来源:stackoverflow

时间:2024-02-07 12:54:25 127浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《无 main 函数时的 GO 库构建指南》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我是一位经验丰富的开发人员,但对 GO 还很陌生。我找到的文档并不简单。我已经习惯了 Java、Scala 和 Python,但 GO 对我来说还是陌生的。我正在尝试在 GO 中创建一个库,并且正处于创建项目结构的第一步。当我运行 go build 时,它告诉我“...中没有 GO 文件”。这是一个纯库,我不需要主文件。有没有办法实现这一点,或者无论如何都需要主文件?

查找文档并查看示例项目。 编辑。我确实有文件,并且已经使用主文件运行了一些测试。但是,一旦我删除了主文件,我就会对如何正确构建它感到有点迷失。


正确答案


这在一定程度上取决于您所说的“库”的含义。如果你指的是预编译的二进制对象,比如 c 语言中的 .a.so 库,那么 go 并没有真正的东西。依赖包作为源下载,然后编译到您的二进制文件中。

如果您的意思是“我可以在其他项目中导入和使用的模块”...您是否查看过其他模块的结构?使用例如以 yaml 模块为例,我们看到:

  • 没有 main.go
  • 如果你克隆它并运行 go mod tidy; go build go build 命令将正常运行。

例如,我可以使用以下结构创建一个模块 mymodule-dep

.
├── functions.go
└── go.mod

go.mod 的位置:

module github.com/larsks/mymodule-dep

go 1.20

并且 functions.go 有:

package mymodule_dep

import "strings"

func replace(s string) string {
    return strings.replace(s, "hello", "goodbye", -1)
}

我可以通过导入到另一个项目来使用该模块,如下所示:

package main

import (
    "fmt"
    dep "github.com/larsks/mymodule-dep"
)

func main() {
    fmt.println(dep.replace("hello, world!"))
}

这假设存在一个存储库https://github.com/larsks/mymodule-dep (现在确实存在)。

如果我构建上述代码,运行它会产生:

Goodbye, world!

今天关于《无 main 函数时的 GO 库构建指南》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>