수색…


소개

go 명령은 Go 개발을 관리 할 수있는 명령 줄 프로그램입니다. 이 도구를 사용하면 코드 작성, 실행 및 테스트는 물론 기타 다양한 Go 관련 작업을 수행 할 수 있습니다.

달려

go run 은 실행 파일을 만들지 않고 프로그램을 실행합니다. 주로 개발에 유용합니다. run패키지 이름main패키지 만 실행합니다.

시연하기 위해 간단한 Hello World 예제 인 main.go .

package main

import fmt

func main() {
    fmt.Println("Hello, World!")
}

파일로 컴파일하지 않고 실행 :

go run main.go

산출:

Hello, World!

패키지에서 여러 파일 실행

패키지가 파일이고 여러 파일로 분리 된 경우 run 명령에 다른 파일을 포함시켜야합니다.

go run main.go assets.go

빌드하기

go build 는 프로그램을 실행 파일로 컴파일합니다.

시연하기 위해 간단한 Hello World 예제 인 main.go를 사용합니다.

package main

import fmt
    
func main() {
    fmt.Println("Hello, World!")
}

프로그램 컴파일 :

go build main.go

build 는 실행 프로그램 (이 경우 main 또는 main.exe 합니다. 그런 다음이 파일을 실행하여 Hello, World! 출력을 볼 수 있습니다 Hello, World! . 또한 Go가 설치되지 않은 유사한 시스템 에이 파일을 복사하여 실행 가능하게 만들고 실행할 수 있습니다.

빌드에서 OS 또는 아키텍처 지정 :

env before build 수정하여 빌드 할 시스템 또는 아키텍처를 지정할 수 있습니다.

env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture

여러 파일 만들기

패키지가 여러 파일로 분할하고, 패키지 이름 (즉, 그것이 가져올 수있는 패키지 없음)의 주요 인 경우, 당신은 구축 할 수있는 모든 파일을 지정해야합니다 :

go build main.go assets.go # outputs an executable: main

패키지 만들기

main 이라는 패키지를 빌드하려면 다음을 사용하면됩니다.

go build . # outputs an executable with name as the name of enclosing folder

청소하기

go clean 은 프로그램에서 go build 를 호출 할 때 생성 된 임시 파일을 정리합니다. 또한 Makefile에서 남은 파일도 정리합니다.

Go Fmt

go fmt 는 프로그램 소스 코드를 읽기 쉽고 이해하기 쉬운 깔끔하고 정중 한 방식으로 형식화합니다. 모든 소스에서 go fmt 를 사용하여 공개하기 위해 제출하거나 버전 제어 시스템에 커밋하여 읽기 쉽도록하는 것이 좋습니다.

파일을 포맷하려면,

go fmt main.go

또는 디렉토리의 모든 파일 :

go fmt myProject

또한 gofmt -s ( go fmt 아닌 )를 사용하여 가능한 모든 코드를 단순화하려고 할 수 있습니다.

gofmt ( go fmt 사용 하지 않음 )를 사용하여 코드를 리팩터링 할 수도 있습니다. Go를 이해하므로 간단한 검색을 사용하고 대체하는 것보다 더 강력합니다. 예를 들어,이 프로그램 ( main.go )이 주어진 경우 :

package main

type Example struct {
    Name string
}

func (e *Example) Original(name string) {
    e.Name = name
}

func main() {
    e := &Example{"Hello"}
    e.Original("Goodbye")
}

OriginalRefactor 로 바꿀 수 있습니다. gofmt :

gofmt -r 'Original -> Refactor' -d main.go

어느 것이 diff를 생산할 것인가?

-func (e *Example) Original(name string) {
+func (e *Example) Refactor(name string) {
     e.Name = name
 }
 
 func main() {
     e := &Example{"Hello"}
-    e.Original("Goodbye")
+    e.Refactor("Goodbye")
 }

이동

go get 은 수입 경로에 의해 명명 된 패키지를 의존성과 함께 다운로드합니다. 그런 다음 'go install'과 같은 명명 된 패키지를 설치합니다. Get은 또한 설치를 제어하는 ​​빌드 플래그를 허용합니다.

go to github.com/maknahar/phonecountry

새 패키지를 체크 아웃 할 때 get은 대상 디렉토리 $GOPATH/src/<import-path> 만듭니다. GOPATH에 여러 항목이 포함되어 있으면 get은 첫 번째 항목을 사용합니다. 마찬가지로 컴파일 된 바이너리를 $GOPATH/bin 합니다.

패키지를 체크 아웃하거나 업데이트 할 때 로컬로 설치된 Go 버전과 일치하는 지점 또는 태그를 찾습니다. 가장 중요한 규칙은 로컬 설치에서 "go1"버전을 실행하는 경우 "go1"이라는 지점 또는 태그를 검색한다는 것입니다. 그러한 버전이 없으면 가장 최신 버전의 패키지를 검색합니다.

go get 사용하면 -d 플래그를 사용하면 주어진 패키지를 다운로드하지만 설치하지 않습니다. -u 플래그를 사용하여 패키지 및 그 종속성을 갱신 할 수 있습니다.

체크 아웃하거나 벤더 디렉토리에 저장된 코드를 업데이트하지 마십시오.

Go env

go env [var ...] prints는 환경 정보를 출력합니다.

기본적으로 모든 정보를 인쇄합니다.

$go env

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/vikashkv/work"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.7.4_1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.7.4_1/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/xf/t3j24fjd2b7bv8c9gdr_0mj80000gn/T/go-build785167995=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"

하나 이상의 변수 이름이 인수로 주어지면 이름이 지정된 각 변수의 값을 자체 행에 인쇄합니다.

$go env GOOS GOPATH

darwin
/Users/vikashkv/work


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow