我在尝试从另一个包和文件导入类型时遇到问题。我要导入的结构是下面的那个。
type PriorityQueue []*Item type Item struct { value string priority int index int }
如果我将PriorityQueue及其所有方法放在同一个文件中,则可以使用
pq:= &PriorityQueue{}
我一直在像疯子一样在互联网上搜索这个简单问题的答案,但我没有找到答案。我通常用Java编程,而导入类是如此基础。
在Go中,您不导入类型或函数,而是导入 包 (请参见Spec:导入声明)。
导入声明示例:
import "container/list"
通过导入包,您可以访问其所有 导出的 标识符,并且可以将它们称为packagename.Identifiername,例如:
packagename.Identifiername
var mylist *list.List = list.New() // Or simply: l := list.New()
导入声明中有一些技巧,例如:
import m "container/list"
您可以使用引用导出的标识符"m.Identifiername",例如
"m.Identifiername"
l := m.New()
也可以这样做:
import . "container/list"
您可以完全省略软件包名称:
l := New()
但是仅在“紧急情况下”或发生名称冲突(这种情况很少发生)时才使用。