从另一个包和文件golang

时间:2015-04-27 14:22:37

标签: struct go package

我在尝试从另一个包和文件导入类型时遇到问题。我正在尝试导入的结构是下面的结构。

type PriorityQueue []*Item

type Item struct {
   value string
   priority int   
   index int 
}

如果我将PriorityQueue及其所有方法放在同一个文件中,我会用

声明它
pq:= &PriorityQueue{}

我一直在寻找互联网,就像这个简单问题的答案,但我还没有找到答案。我通常用java编程,导入类是如此基础。

2 个答案:

答案 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

...