登录
首页 >  Golang >  Go问答

我可以拥有同名的库和二进制文件吗?

来源:Golang技术栈

时间:2023-03-24 12:23:14 333浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《我可以拥有同名的库和二进制文件吗?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我正在构建一个库,但我也希望它可以用作独立的二进制文件。

例如,假设我正在构建 Tar 的实现。Tar 通常用作命令,但也可以用作库。直觉上,我会做这样的事情:

src/
    tar/
        tar.go # belongs to package tar
        main.go # imports tar and provides a main function

这似乎不起作用。从文档看来,“命令”应该有一个与库不同的名称。将那里给出的示例改编为这个示例,我有以下目录结构:

src/
    tar/
        tar.go # belongs to package tar
    tarbin/
        main.go # imports tar and provides a main function

但是,这会创建一个名为 的命令tarbin,而不是tarin $GOPATH/bin。我发现的解决方法是做go build -o $GOPATH/bin/tar tar,但我觉得我做错了可怕的事情。有没有更好的办法?

注意: 我很清楚它tar包含在标准库中,我只是将其用作示例。

正确答案

我可能会这样做

src/
    tar/
        tar.go         # tar libary
        tar/
            main.go    # tar binary

这将为您提供一个名为的二进制文件tar和一个名为的库tar

假设您在 github 上托管它,那么您想要

src/
    github.com/
        you/
            tar/
                tar.go         # tar libary
                tar/
                    main.go    # tar binary

当你这样做时,它会给你一个名为 tar 的二进制文件,而当你这样做时,它会给你一个名为的go get install github.com/you/tar/targithub.com/you/tar``go get install github.com/you/tar

根据您认为哪个更重要,您可以交换库和二进制文件

src/
    github.com/
        you/
            tar/
                main.go            # tar binary
                tar/
                    tar.go         # tar libary

将所有代码保存在一棵树中使您能够go install ./...从根目录构建所有包和子包,这是一个优势。 go test|fmt ./...还。(请注意,这确实是 3 个点!)

到这里,我们也就讲完了《我可以拥有同名的库和二进制文件吗?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于golang的知识点!

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