2013-01-19 14 views
38

W moim GOPATH mam coś takiego:Golang: Błąd "Nie można załadować pakiet: Pakiet my_prog: znaleziono pakiety my_prog i głównym"

/bin/ 
/pkg/ 
/src/ 
/src/my_prog/ 
/src/my_prog/main.go 
/src/my_prog/d_interface.go 
/src/my_prog/d_struct_that_implements_the_interface.go 

W main.go mam package main w d_interface.go i d_struct_that_implements_the_interface.go mam package my_prog.

Kiedy próbuję go build my_prog pojawia się następujący błąd:

can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog 

Czy oznacza to, że każdy plik, który należy do package main powinien iść we własnym folderze? Jeśli tak, jaki jest tego powód?

Odpowiedz

40

Tak, każdy pakiet musi być zdefiniowany w swoim własnym katalogu.

Struktura źródłowa jest zdefiniowana w How to Write Go Code.

Pakiet to komponent, którego można używać w więcej niż jednym programie, który można opublikować, zaimportować, pobrać z adresu URL itp. Czyli ma on własny katalog, tak jak program mieć katalog.

+0

Tak, ale czy pakiet główny kwalifikuje się jako niezależny pakiet? Zgodnie z moim rozumieniem, pakiet main jest dziwactwem języka, który zapewnia punkt wejścia (podobnie jak klasy Javy, które mają publiczny statyczny main). – TheTeaMan

+0

Tak, tak to działa. W praktyce umieszczam mój "główny" pakiet bardzo mało kodu, tylko ten, który nie może być użyty w innych programach. –

+3

To dość denerwujące, aby być szczerym. Nie widzę powodu, aby oddzielać główny punkt wejścia od reszty programu. Przyjmuję tę odpowiedź. – TheTeaMan

0

upewnij się, że twój pakiet jest zainstalowany w katalogu $ gopath lub już w twoim obszarze roboczym.

Na przykład: jeśli $ gopath = "c: \ iść", upewnij się, że pakiet wewnątrz "C: \ Go \ src \ pkg \ github.com"

9

Ponadto, jeśli wszystko, co próbują zrobić to podzielić plik main.go na wiele plików, a następnie po prostu nazwać inne pliki "głównym pakietem", o ile tylko zdefiniujesz główną funkcję w jednym z tych plików, jesteś dobry.

Powiązane problemy