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

tar*_*all 1 go

例:

package "main"

import "fmt"

func main() {
    fmt.Println("hey there")
}
Run Code Online (Sandbox Code Playgroud)

可写:

package "main"

import blah "fmt"

func main() {
    blah.Println("hey there")
}
Run Code Online (Sandbox Code Playgroud)

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

package "main"

import "fmt" // ???

func main() {
    Println("hey there")
}
Run Code Online (Sandbox Code Playgroud)

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

Cer*_*món 10

使用 .(明确期间)进口.该规范说:

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

例:

package main

import (
    . "fmt"
)

func main() {
    Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud)

Go社区不鼓励使用显性期.

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

 package main

import (
    "fmt"
)

var Println = fmt.Println

func main() {
    Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud)