有没有一种方法可以在golang导入中使用名称而无需每次都指定软件包名称? 在C ++中,我可以“使用” nampespace。 在Java中,当我导入某些内容时,将自动使用名称空间。
有时,我有一个高级帮助程序库,其主要目的是使用另一个pacakge,并为其提供一些高级包装器。在代码中反复使用pacakge名称似乎过于冗长。
package myhighlevellibrary
import "mypackage"
func Foo() *mypackage.SomeType{
a:=mypackage.Somefunction();
b:=mypackage.SomeFactoryMethod(a);
return b
}
我可以以某种方式避免在我的代码中多次编写“ mypackage”文字吗?随着我的图书馆越来越大,情况变得越来越糟...
答案 0 :(得分:6)
可以使用“点”导入。在导入声明中使用.
作为程序包名称,这样您就可以引用程序包的导出标识符,就像在导入程序包中声明它们一样。
如果出现一个明确的句点(
.
)而不是名称,则在该软件包的package block中声明的所有软件包导出标识符将在导入源文件的文件块中声明,并且必须在没有限定词。
这是您的示例的样子:
package myhighlevellibrary
import . "mypackage"
func Foo() *SomeType {
a := Somefunction()
b := SomeFactoryMethod(a)
return b
}
这是可运行的Playground example:
package main
import (
. "fmt"
. "reflect"
)
func main() {
Println(TypeOf("text")) // short for: fmt.Println(reflect.TypeOf("text"))
}
查看相关的/可能的重复项:What's C++'s `using` equivalent in golang