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是全局变量(第一个字母应大写)