別のパッケージとファイルからタイプをインポートしようとすると問題が発生します。インポートしようとしている構造体はその下にあります。
type PriorityQueue []*Item
type Item struct {
value string
priority int
index int
}
PriorityQueueをそのすべてのメソッドと共に同じファイルに配置する場合、次のように宣言します。
pq:= &PriorityQueue{}
私はこの単純な質問の答えを狂人のようにインターネットで探していましたが、答えが見つかりませんでした。私は通常Javaでプログラミングし、インポートクラスはとても初歩的です。
Goでは、型や関数をインポートせず、 packages をインポートします( 仕様:宣言のインポート)を参照 )。
インポート宣言の例:
import "container/list"
また、パッケージをインポートすることにより、そのすべてのexported識別子にアクセスでき、それらを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()
ただし、これらは「緊急時」または名前の衝突がある場合にのみ使用してください(まれです)。
@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
...