2013-01-19 2 views
38

나는 이런 식으로 뭔가가 오류 ": 패키지 my_prog 패키지가 my_prog 발견 및 주요 패키지를로드 할 수 없습니다"d_interface.god_struct_that_implements_the_interface.go 내가 가지고, 나는이 package mainmain.go에서Golang : 내 GOPATH에서

/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 

package my_prog.

나는 다음과 같은 오류 얻을 go build my_prog하려고 :

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 

이이 package main에 속하는 모든 파일이 자신의 폴더에 이동해야한다는 뜻을? 그렇다면이 이유는 무엇입니까?

답변

40

예, 각 패키지는 고유 한 디렉토리에 정의되어야합니다.

소스 구조는 How to Write Go Code으로 정의됩니다.

패키지는 하나 이상의 프로그램에서 사용할 수있는 구성 요소로, 게시, 가져 오기, URL에서 가져 오는 등의 작업을 수행 할 수 있습니다. 따라서 프로그램에서 할 수있는만큼 자체 디렉토리를 가질 수 있습니다 디렉토리가있다.

+0

예, 패키지 메인은 독립 패키지로 제공됩니까? 내 이해를 돕기 위해 package main은 진입 점을 제공하는 언어의 단점입니다 (public static main을 가진 Java 클래스와 비슷합니다). – TheTeaMan

+0

예, 그것이 작동하는 방법입니다. 실제로 나는 "메인"패키지에 아주 적은 코드만을 넣었고 다른 프로그램에서는 사용할 수없는 코드만을 넣었습니다. –

+3

그건 솔직히 짜증나. 주 진입 점을 나머지 프로그램과 분리 할 이유는 없습니다. 나는이 대답을 받아 들일 것이다. – TheTeaMan

0

패키지가 $ gopath 디렉토리에 설치되어 있거나 작업 공간에 이미 설치되어 있는지 확인하십시오.

예를 들어

: 당신의 $의 gopath = 경우 : ": \로 이동 \ SRC \ PKG \ github.com C"또한

9

, 모든 당신이 시도하는 경우, "C \ 가서"내부 패키지가 있는지 확인 할 main.go 파일을 여러 파일로 나눈 다음 다른 파일의 이름을 "package main"으로 지정하면 해당 파일 중 하나에서 주 기능 만 정의하면 갈 수 있습니다.