Импорт структуры из другого пакета и файла golang

У меня проблема с попыткой импортировать тип из другого пакета и файла. Я пытаюсь импортировать структуру, которую я пытаюсь импортировать.

type PriorityQueue []*Item

type Item struct {
   value string
   priority int   
   index int 
}

Если бы я поставил PriorityQueue вместе со всеми его методами в том же файле, я бы объявил его с помощью

pq:= &PriorityQueue{}

Я искал интернет, как сумасшедший, для ответа на этот простой вопрос, но я не нашел ответа. Я обычно программирую в Java, и классы импорта настолько элементарны.

Ответ 1

В Go вы не импортируете типы или функции, вы импортируете packages (см. Spec: Импорт объявлений).

Пример объявления импорта:

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()

Но используйте их только "в экстренном случае" или при столкновении имен (которые встречаются редко).