一尘不染

是否可以不指定软件包名称?

go

这是我的代码示例:

package main

import (
  "./bio"
)

func main() {
   bio.PeptideEncoding(genome, codonTable)
}

是否可以使用我的paxkage(bio)中的函数而无需指定包名称:

func main() {
   PeptideEncoding(genome, codonTable)
}


阅读 197

收藏
2020-07-02

共1个答案

一尘不染

您可以将其用作导入声明,例如:

. "./bio"

如果出现显式的句号(.)而不是名称,则在该软件包的package块中声明的所有软件包导出的标识符都将在导入源文件的file块中声明,并且
必须在不使用限定符的情况下进行访问

这就是像govey这样测试框架所做的

package package_name

import (
    "testing"
    . "github.com/smartystreets/goconvey/convey"
)

func TestIntegerStuff(t *testing.T) {
    Convey("Given some integer with a starting value", t, func() {
        x := 1

        Convey("When the integer is incremented", func() {
            x++

            Convey("The value should be greater by one", func() {
                So(x, ShouldEqual, 2)
            })
        })
    })
}

您不需要使用convey.So(),或者convey.Convey()由于导入以’开头.

但是请不要滥用它,因为正如twotwotwo注释那样 在测试之外不鼓励使用它。

除这种情况外,请勿import .在程序中使用。
由于不清楚Quux之类的名称是否是当前包或导入包中的顶级标识符,因此使程序更难阅读。

这就是为什么我提到了使用这种技术的 测试 框架。


正如Simon Whitehead所评论的那样,通常不认为使用 相对导入
是最佳实践(例如,参见“ Go语言包结构

2020-07-02