在不使用包名的情况下调用包的功能?

时间:2017-12-23 16:56:44

标签: go

示例:

package "main"

import "fmt"

func main() {
    fmt.Println("hey there")
}

可写:

package "main"

import blah "fmt"

func main() {
    blah.Println("hey there")
}

但无论如何要导入fmt来实现:

package "main"

import "fmt" // ???

func main() {
    Println("hey there")
}

相比之下,在C#中,您可以使用静态导入(例如using static System.Console)来完成此操作。这可能在Go?

1 个答案:

答案 0 :(得分:8)

使用。 (明确期间)进口。 specification says

  

如果出现显式句点(。)而不是名称,则在该包的包块中声明的所有包的导出标识符将在导入源文件的文件块中声明,并且必须在没有限定符的情况下访问。

示例:

package main

import (
    . "fmt"
)

func main() {
    Println("Hello, playground")
}

Go社区不鼓励使用显性期限。

另一种选择是使用函数的ref来声明包级别变量。

 package main

import (
    "fmt"
)

var Println = fmt.Println

func main() {
    Println("Hello, playground")
}