Struct 从另一个包和文件golang导入结构

Struct 从另一个包和文件golang导入结构,struct,go,package,Struct,Go,Package,我在尝试从另一个包和文件导入类型时遇到问题。我试图导入的结构就是下面的结构 type PriorityQueue []*Item type Item struct { value string priority int index int } 如果我将PriorityQueue及其所有方法放在同一个文件中,我将用 pq:= &PriorityQueue{} 我像疯子一样在互联网上搜索这个简单问题的答案,但我没有找到答案。我通常用java编程,导入类非常简单

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

type PriorityQueue []*Item

type Item struct {
   value string
   priority int   
   index int 
}
如果我将PriorityQueue及其所有方法放在同一个文件中,我将用

pq:= &PriorityQueue{}

我像疯子一样在互联网上搜索这个简单问题的答案,但我没有找到答案。我通常用java编程,导入类非常简单

在Go中,不导入类型或函数,而是导入(请参阅)

导入声明示例:

import "container/list"
通过导入包,您可以访问其导出的所有标识符,您可以将它们称为
packagename.Identifiername
,例如:

var mylist *list.List = list.New()

// Or simply:
l := list.New()
在导入声明中有一些技巧,例如:

import m "container/list"
import . "container/list"
您可以使用
“m.Identifiername”
引用导出的标识符,例如

l := m.New()
还通过以下方式:

import m "container/list"
import . "container/list"
您可以完全省略包名:

l := New()

但仅在“紧急情况”或发生名称冲突时(这是罕见的)才使用这些选项。

上面@icza所说的加上:

Go 1.9中有一些类型别名,允许您从包中导入类型,并将它们别名为类似于本地的类型:

package.go
目录:

type A struct {
    X, Y int
}
...

import myTypes "path/to/package"

// Note the equal sign (not empty space)
// It does NOT create a new "subclass"
// It's an actual alias that is local.
// Allows you to avoid whole-sale `import . "path/to/package"` which imports all objects from there into local scope.
type A = myTypes.A

...
main.go
目录:

type A struct {
    X, Y int
}
...

import myTypes "path/to/package"

// Note the equal sign (not empty space)
// It does NOT create a new "subclass"
// It's an actual alias that is local.
// Allows you to avoid whole-sale `import . "path/to/package"` which imports all objects from there into local scope.
type A = myTypes.A

...

为什么不将结构复制到包中?或者导入包?对其进行限定
pq:=&mypkg.PriorityQueue{}
。可能的重复我面临同样的问题,解决方法是不仅对结构名称使用caps,而且对结构内部的变量使用caps,以便将其导出。我还犯了一个错误,在GOPATH之外创建了一个新项目。本地导入失败可能是完成此操作的第一个迹象。使用
import.
完全省略包名是非常棒的!如何从myTypes访问“X”?因为,在类似的场景中,myTypes.a.X似乎不起作用。要访问struct中的变量,只需执行myTypes.X并确保X是全局变量(第一个字母应大写)