我在尝试从另一个包和文件导入类型时遇到问题。我正在尝试导入的结构是下面的结构。
type PriorityQueue []*Item
type Item struct {
value string
priority int
index int
}
如果我将PriorityQueue及其所有方法放在同一个文件中,我会用
声明它pq:= &PriorityQueue{}
我一直在寻找互联网,就像这个简单问题的答案,但我还没有找到答案。我通常用java编程,导入类是如此基础。
答案 0 :(得分:41)
在Go中,您不导入类型或功能,导入packages(请参阅Spec: Import declarations)。
示例导入声明:
import "container/list"
通过导入包,您可以访问其所有导出的标识符,您可以将其称为packagename.Identifiername
,例如:
var mylist *list.List = list.New()
// Or simply:
l := list.New()
导入声明中有一些技巧,例如:
import m "container/list"
您可以使用"m.Identifiername"
引用导出的标识符,例如
l := m.New()
同样:
import . "container/list"
您可以完全省略包裹名称:
l := New()
但只能使用这些“紧急情况”或有名称冲突(很少见)。
答案 1 :(得分:1)
@icza上面所说的内容:
在Go 1.9中,有类型别名可以让您将包中的类型剥离为本地类型:
package.go
内容:
type A struct {
X, Y int
}
main.go
内容:
...
import myTypes "path/to/package"
// note the equal sign
type A = myTypes.A
...