2017-01-10 1 views
2

일부 코드를 작성한 다음 출력 파일에 앱을 빌드하지만 때로는 앱이 빌드 가능한지, 즉 오류가없고 컴파일 된 출력을 생성하는지 실제로 출력 파일을 쓰지 않고 확인해야합니다. go 앱이 빌드 가능한지 확인하는 방법은 무엇입니까?

나는이 변형을 시도하고 작동 듯 :

go build -o /dev/null myapp 

그러나 나는 그것을 구축 할 수 있는지 확인하기 위해 더 "공식적인"이동 방법이 있어야 생각한다.

알려 주시기 바랍니다.

+0

왜 빌드를 확인하기 위해 검사를 사용하지? – JimB

답변

0

한 가지 방법은 모든 파일에 gofmt -e my_file.go 수 있지만 것 : 잘

  • 이 실제로 go build 수 있음을 모든 오류를보고하지 않습니다 확장하지 않을

    • .

    의미 : go build -o /dev/null은 여전히 ​​더 철저한 접근 방법 일 수 있습니다. 갈 응용 프로그램을 빌드 할 경우 see gotype

  • 2

    을 확인하는 방법 : 그냥 문법과 구조의 유효성을 확인하는

    ?

    내가 알기로, 편집중인 파일에 오류가 없는지 확인하고 싶습니다.

    다음 vim에는 vim-go plugin을 사용할 수 있습니다.

    그리고 설정 바로 가기를 만들기위한 당신의 .vimrc :

    "shortcut for vim-go 
    au FileType go nmap <leader>r <Plug>(go-run) 
    au FileType go nmap <leader>b <Plug>(go-build) 
    au FileType go nmap <leader>t <Plug>(go-test) 
    au FileType go nmap <leader>c <Plug>(go-coverage) 
    

    내 파일을 그냥 \+b을 입력 오류가없는보고 할 때 나는 내 일상 직장 생활로 사용. 터미널에 go build을 입력하지 않고 오류를 출력합니다.

    도움이 되길 바랍니다.

    0

    나는 VSCode을 사용하며, 확장자가 this 인 Go를 사용할 때 Sublime보다 우수하다는 것을 알았습니다. 문서를 저장할 때 형식이 잘 지정됩니다. 그것은 golint의 도움으로 코드를 작성하면서 오류를 보여 주므로 개발이 매우 편리합니다.

    gofmt와 별도로 golint를 별도로 사용할 수도 있습니다. 수의사에게 시도 할 수도 있습니다. 당신이 할 수있는 경우에 사용할 것이기 위하여 주변에 계속하는 논쟁이있다 그러나 나는 다만 둘 다 사용하도록 조언 할 것입니다.

    1

    패키지 또는 앱이 빌드 가능한지 확인하려면 go build이 "공식적인"방법입니다.

    가장 쉬운 방법은 무엇입니까? 제 생각에는 당신은 그것에 충실해야합니다.

    go build -o delme && rm delme 
    

    을하지만 다음 삭제 결과를 작성하는,하지만이 솔루션은 독립적 인 플랫폼으로는 (/dev/null로 윈도우에 존재하지 않는) 다소 느리다 : 또는 당신이 할 수 있습니다.

    작성하고 현재 작업 디렉토리에 결과를 떠나 정의 go build에 의해, 명령 (main 패키지)를 구축

    . "보통"패키지 (예 : main)를 만들면 은 폐기 됨이됩니다. 여기에서 자세한 내용을 참조하십시오 : What does go build build?

    을 그래서 당신이 결과를 수동으로 삭제 -o /dev/null PARAM를 사용하거나 할 필요가 당신을 귀찮게하는 경우, 당신은 비 mainmain 패키지를 "변환"수의이 main2를 호출 할 수 있습니다. 새로운 main 패키지를 추가하십시오. 다른 패키지는 가져 오지 않고 가져오고 main2.Main()을 호출하십시오. main2 패키지를 만들면 파일이 남지 않습니다.

    예. myapp/main.go :

    package main 
    
    import "myapp/main2" 
    
    func main() { main2.Main() } 
    

    myapp/main2/main2.go :

    // Every content you originally had in main.go 
    
    package main2 
    
    func Main() { 
        // ... 
    } 
    
    관련 문제