IT

메인 패키지에 여러 파일이있는 프로젝트를 어떻게 "실행"할 수 있습니까?

lottoking 2020. 7. 9. 07:53
반응형

메인 패키지에 여러 파일이있는 프로젝트를 어떻게 "실행"할 수 있습니까?


현재 메인 패키지에 단일 파일이 main.go있습니다. main.go코드를 포함 할 수 없기 때문에 별도의 패키지를 만들지 않고 내용 을 여러 파일로 나누는 방법은 무엇입니까?

다음과 같은 디렉토리 구조를 원합니다.

$ ls foo

main.go
bar.go

bar.go

package main

import "fmt"

func Bar() {
    fmt.Println("Bar")
}

그런 다음 main.go

package main

func main() {
    Bar()
}

그러나 go run main.go나에게 준다 :

# command-line-arguments
./main.go:4:2: undefined: Bar

2019 년 7 월 26 일 업데이트

go run .

원래 답변

위의 코드는 실제로 작동합니다. 문제는 내가 달려야했다.

go run *.go

대신에

go run main.go

업데이트 년 8 월 2018로 이동 1.11 하는 부분 "실행" 상태 :

명령은 이제 단일 가져 오기 오기 오기 경로, 디렉토리 이름 또는 단일 패키지와 일치하는 패턴을 허용합니다. 이것은 또는 가장 중요하게go run
go run pkggo run dirgo run .


원래 답변 2015 년 1 월

에서 언급 한 바와 같이 " 어떻게 여러 개의 파일로 구성된 이동 프로그램 을 컴파일하려면 ? ", 그 이후의 파일 목록 기대 "하고 실행 컴파일을 명명 된 이동 소스 파일을 포함하는 패키지를". 따라서 패키지를 여러 파일로 분할 할 수 있습니다 .go runmain
maingo run

그것은 패키지 이름을 기대하는 것과 동일하게 작성되어 있습니다. 간단 하면 부모 폴더의 이름을 딴 실행 파일이 생성됩니다.go build/go install
go build

표준이 에서 설명하는 것처럼 셸 은 와일드 카드 확장을 수행하지 않기go run *.go 때문에 윈도우 CMD에서 작동하지 세션 않습니다 .


Windows에서는 펼쳐지는 go run *.go파일을 참조 할 수 있습니다 (* .go가 작동하지 않기 때문에).go run main.go other.go third.go


Windows의 경우 Cygwin을 설치하고 명령 프롬프트 대신 사용하십시오. 그러면 "go run * .go"가 작동합니다.


gorilla mux를 사용하여 localhost에서 여러 파일을 실행하려는 경우 최신 버전 (1.11)에 따라 이동하십시오. 다음 두 명령 중 하나를 사용합니다.

  1. 설치 && FolderName -port 8081로 이동하십시오.

  2. 빌드 && ./FolderName -port 8081로 이동하십시오.

터미널에서 명령을 실행하기 전에 소스 폴더 (예 : go / src / FolderName)에 있는지 확인하십시오.


내 생각에,이 질문에 대한 가장 좋은 답변은 최상위 답변에 대한 주석에 숨겨져 있습니다.

출시 실행하십시오 :

go run .

패키지의 모든 기본 파일이 실행되고 다음 과 같은 오류 메시지가 -display 됩니다 .

go run: cannot run *_test.go files (main_test.go)

@BarthesSimpson에 대한 명성

참고 URL : https://stackoverflow.com/questions/28081486/how-can-i-go-run-a-project-with-multiple-files-in-the-main-package

반응형