2014-02-21 5 views
3

이것은 초보자 질문입니다 ... "myprogram"이라는 디렉토리 (루트로 시작된 저장소)에 Go 코드가 있다고 가정 해 봅니다. 그리고 여러 하위 디렉토리로 나뉘어 진 패키지를 작성합니다.Go, Golang : 명령 행 인터페이스 용 프로그램, 패키지 구조

은 그 때 나는

저장소, 루트 디렉토리

myprogram
----------- package1
----------- 패키지 2가
----------- package3

그런 다음 myprogram 디렉토리에, 나는 모든 팩을 호출합니다 주요 프로그램에 대한 기본 패키지 및 주요 프로그램 코드를 작성합니다 다음과 같은 하위 디렉토리에 정의되어 연령 :

main.go

import "github.com/username/package1" 
import "github.com/username/package2" 
import "github.com/username/package3" 

func main() { 
    package1.Function1() 
    .... 
} 

그럼 난 그냥 내가 지금까지 아무 문제가

$ go run main.go 

이 코드를 실행할 수 있습니다. 그러나이 프로그램에 깃발이있는 기능이 있다면 어떨까요?

$ go run main.go flag1 flag2 

, 저장소

을이 작동하지만, 나는 모든 프로그램과 소스 코드는 프로젝트의 이름입니다 디렉토리 myprogram 아래에 포함되기 때문에

$ myprogram 
$ flag1 
.... 
$ flag2 

뭔가를 실행하려면

myprogram
----------- package1
----------- 패키지 2
----------- package3
내 프로그램이 명령에 의해 실행되도록 어떻게 우리는 명령이 같은 뭔가 빔을 실행

...

$ vim 

을 요약하면, , 주행에 의한 것이 아닌가?

참조 할 수있는 오픈 소스 저장소가 있습니까? 또는 읽을 패키지 또는 설명서를 알려주십시오. 시도했는데

go install 

하지만 원하는대로 작동하지 않을 수 있습니다.

고맙습니다.

+1

@ FuZxxl의 답변에서 확장하려면 :'go run'은 빠른 단일 파일 검사에만 사용되어야합니다. Go는 스크립팅 언어가 아니므로 컴파일해야합니다 (효율적으로 실행하면 바이너리가 삭제됩니다).하나의 패키지 ('package main' 또는'package mylibrary')에 여러 개의 파일을 가지고있을 때'go build'를 사용해야합니다. – elithrar

답변

2

go build을 사용하십시오. 그러면 현재 디렉토리에 패키지의 실행 파일이 만들어집니다. go build <packagename>을 실행하여 $GOPATH/bin에 2 진수를 생성 할 수도 있습니다.

+0

나는 항상 빌드 빌드와 packagename 빌드를하기 때문에 혼란 스러웠다. packagename을 빌드하자. 이것은 GOPATH/bin에서 바이너리를 생성하는 것이다. 빌드하지 않습니다. –

+1

네, 맞아요. – fuz