在go编程语言中,为什么在导入包之后我仍然必须在包中使用包名称作为方法的前缀?
即
import "io/ioutil"
func main() {
content, err = iotuil.ReadFile("somefile.txt")
// etc..
}
Run Code Online (Sandbox Code Playgroud)
这不是多余的吗?例如,在Java中,您可以在不导入文件的情况下执行Files.readAllLines等操作.
我正在尝试从以下文件中的另一个包导入结构:
// main.go
import "path/to/models/product"
product = Product{Name: "Shoes"}
// models/product.go
type Product struct{
Name string
}
Run Code Online (Sandbox Code Playgroud)
但是在main.go文件中结构Product是未定义的.如何导入结构?
有没有一种方法可以在golang导入中使用名称而无需每次都指定包名称?在C ++中,我可以“使用” nampespace。在Java中,当我导入某些内容时,将自动使用名称空间。
有时候,我有一个高级帮助程序库,其主要目的是使用另一个pacakge,并为其提供一些高级包装器。在代码中反复使用pacakge名称似乎过于冗长。
package myhighlevellibrary
import "mypackage"
func Foo() *mypackage.SomeType{
a:=mypackage.Somefunction();
b:=mypackage.SomeFactoryMethod(a);
return b
}
Run Code Online (Sandbox Code Playgroud)
我能以某种方式避免在代码中多次编写“ mypackage”文字吗?随着我的图书馆越来越大,情况变得越来越糟...