2015-04-27 15 views
10

Mam problem z zaimportowaniem typu z innego pakietu i pliku. Strukturę, którą próbuję zaimportować, to ta, która jest pod spodem.Importowanie struktury z innego pakietu i pliku golang

type PriorityQueue []*Item 

type Item struct { 
    value string 
    priority int 
    index int 
} 

Gdybym umieścić kolejka priorytetowa wraz ze wszystkimi jego metod w tym samym pliku Chciałbym zadeklarować ją

pq:= &PriorityQueue{} 

Szukałem w internecie jak szaleniec na odpowiedź na to proste pytanie, ale nie znalazłem odpowiedzi. Zwykle programuję w Javie, a klasy importu są tak elementarne.

+0

Dlaczego po prostu nie skopiowałbyś struktury do swojej paczki? – smartDonkey

+0

Lub zaimportować paczkę? – smartDonkey

+1

Zakwalifikuj to. 'pq: = & mypkg.PriorityQueue {}'. –

Odpowiedz

26

W programie Go nie importujesz typów ani funkcji, importujesz packages (patrz Spec: Import declarations).

Deklaracja na przykład import:

import "container/list" 

I importując pakiet można uzyskać dostęp do wszystkich swoich eksportowane identyfikatory i można odnosić się do nich jak packagename.Identifiername, na przykład:

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

// Or simply: 
l := list.New() 

W zgłoszeniu importu są pewne sztuczki, na przykład:

import m "container/list" 

Można odwoływać się do wyeksportowanych identyfikatorów za pomocą "m.Identifiername", np.

l := m.New() 

także wykonując:

import . "container/list" 

można pominąć nazwę pakietu całkowicie:

l := New() 

jednak korzystać tylko te „w nagłych przypadkach” lub gdy istnieją kolizji nazw (które są rzadkie).

+0

Również popełniłem błąd, gdy tworzę nowy projekt poza GOPATH. Spadek lokalnego importu może być pierwszą oznaką, że zostało to zrobione. – Shadoninja