1. 맥북에 설치하기
brew install go
➜ ~ go version
go version go1.22.1 darwin/arm64
➜ ~ which go
/opt/homebrew/bin/go
2. go 작업 공간
- go install -> 단일 작업 공간(workspace)가 있어야 한다.
- 기본 디렉터리 : $HOME/go
- go 패키지 예제 코드 : $HOME/go/src
- 컴파일한 바이너리 : $HOME/go/bin
- GOPATH를 명시적으로 설정, $GOPATH/bin을 실행가능한 경로로 환경변수에 추가하자. 작업 공간의 위치를 명확하게 한다.
- $GOPATH 환경변수를 설정 - go install로 설치된 서드 파티 도구들을 쉽게 실행하도록 해준다.
vi ~/.zshrc
export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin"
- 책에서는 gopath를 사용하라고 가이드하고 있으나, go 1.11부터는 go modules가 추가되었다.
-
- 프로젝트 루트 디렉토리에 go.mod 사용해서 의존성 정보를 저장하고 go get을 통해 가져온다.
- 프로젝트간 충돌 관리 측면에서 의존성을 가져오고 관리할 수 있다.
- go run : 임시 디렉터리에 컴파일된 바이너리를 만들고, 실행 종료시 삭제한다. (테스트시 사용)
- go build : 명령을 수행한 디렉터리에 바이너리를 만든다. (배포 위한 바이너리 생성시 사용)
- go install : 작업 공간에 소스를 받아 빌드/설치 가능하다.
- maven, NPM같은 중앙 호스팅 서비스에 의존하지 않아도 된다. (프로젝트에 필요한 외부 패키지를 직접 가져와서 사용할 수 있다.)
- 버전 업데이트도 동일한 명령어를 사용한다.
- go install로 설치할 수 있도록 만들면 배포할 필요없이 편하게 받을 수 있다.
➜ go install github.com/rakyll/hey@latest
go: downloading github.com/rakyll/hey v0.1.4
go: downloading golang.org/x/net v0.0.0-20181017193950-04a2e542c03f
go: downloading golang.org/x/text v0.3.0
/Users/go
➜ go ls
bin pkg
➜ ./hey https://www.golang.org
Summary:
Total: 2.5956 secs
Slowest: 0.0000 secs
Fastest: 0.0000 secs
Average: NaN secs
Requests/sec: 77.0521
- go의 주요 설계 목표 중 하나 : 효율적인 코드 작성
- 표준 포맷을 강제 - 컴파일러 단순화
- go fmt - 포맷 정렬
- goimports - import 정렬 및 제거
- 세미콜론 삽입 규칙
- go는 모든 구문 끝에 세미콜론이 있어야 한다.
- 식별자, 기본 리터럴, break, continue, fallthrough, return, ++, --, ), } 뒤에는 렉서가 자동으로 세미콜론을 붙여준다.
- 컴파일러의 구문 분석 : 토크나이저 -> 렉서 -> 파서, 결과로 추상 구문 트리(AST)가 나온다.
- golint : 코드 스타일 가이드 라인 (변수 이름, 오류 메세지 포매팅, 공개 메서드/타입 주석 배치)
- vet : 잘못된 수의 파라미터 전달 / 사용되지 않는 변수에 값 할당
- golangci-lint : golint, go vet +a 코드 품질 도구 세트 통합
- 현재 프로젝트에서 사용중인 ktlint와 golint 비교
'Language > GoLang' 카테고리의 다른 글
[GopherCon 2021] Go Scheduler (0) | 2024.05.06 |
---|---|
[learning go] 2. 기본 데이터 타입과 선언 (0) | 2024.04.07 |