Go 참고 문서 모음
Go 초보 가이드
- Go Documentation
- Go 공식 문서
- Go Download and Install
- Go 설치 가이드
- A Tour of Go
- Go 문법 입문 가이드
- 50 Shades of Go
- 초보 Go 개발자를 위한 50가지 팁 모음 (정정이 필요한 내용)
- The Go Programming Language Specification
- Go 언어 스펙 (최신 버전 기준)
Go 코드 작성 가이드
- Effective Go
- Go 공식 문서에서 제공하는 Go 코드 작성 팁
- Go Code Review Comments
- Go 공식 문서에서 제공하는 Go 코드 리뷰 코멘트 모음
- Google Go Style Guide
- Google에서 제공하는 Go 스타일 가이드
- Uber Go Style Guide
- Uber에서 제공하는 Go 스타일 가이드
- 뱅크샐러드 Go 코딩 컨벤션
- 뱅크샐러드에서 제공하는 Go 코딩 컨벤션 (= 코딩 스타일 + 프랙티스 + 원칙)
Go 프로젝트 구조
- Go Project Layout
- 표준에 가까운(de facto standard) Go 프로젝트 구조
Go 디자인 패턴
- Go Patterns
- Go에서 사용되는 디자인 패턴 모음 (원본 레포가 활동을 안해 포크한 레포)
- Go로 된 디자인 패턴
- Go 코드로 작성된 GoF 디자인 패턴 모음 (각 디자인 패턴이 Go 언어에 적합한지 고민 필요)
- Functional Options Pattern, Functional Options for Friendly APIs
- Go에서 자주 사용하는 functional options 패턴 소개
Go 동시성
- Go Concurrency Patterns, Advanced Go Concurrency Patterns
- 2012, 2013 Google I/O에서 발표한 Go 동시성 패턴
- Go Concurrency Guide
- 예제 기반의 Go 동시성 가이드
- Visualizing Concurrency in Go
- 3D WebGL을 통해 Go 동시성 시각화
Go 테스트
- Advanced Testing with Go
- NewStore TechTalk에서 발표한 Go 테스트 관련 팁
- Prefer Table Driven Tests
- 테이블 기반 Go 테스트 소개
- Learn Go with Tests
- 테스트 코드 작성 예시를 보며 Go와 TDD(Test Driven Development) 배우기
Go 성능 최적화
- pprof
- Go 프로그램의 프로파일링 데이터를 시각화 및 분석하는 도구
- automaxprocs
- Go 프로그램을 컨테이너 환경에서 실행할 때, GOMAXPROCS 값을 CPU 코어 개수가 아닌 컨테이너 CPU 제한에 맞게 설정하는 모듈
- go-perfbook
- Go 성능 최적화에 대한 생각을 담은 글
- Reducing Memory Allocations in Golang
- Go 메모리 할당을 줄이는 팁 (string/byte slice 캐스팅 트릭은 1.20 버전부터 함수로 지원)
- The One Billion Row Challenge in Go
- Go를 사용하여 10억 행을 처리하는 시간을 1분 45초에서 4초로 단축하는 9가지 최적화 방법을 소개
- Golang GC 튜닝 가이드
- 카카오 테크 블로그에서 소개하는 Golang GC 튜닝 가이드
Go 린트
- golangci-lint
- Go 코드를 검사할 수 있는 린트 도구 (Github Action과 연동해서 많이 사용)
- Golden config for golangci-lint
- 괜찮은 린트 옵션들만 활성화한 golangci-lint 설정 파일 예시
Go 프로젝트 모음
- Awesome Go
- Go 코드로 작성된 훌륭한 프레임워크, 라이브러리, 소프트웨어 모음
참고할 만한 자료 모음
- The Go Blog
- Go 공식 문서에서 제공하는 블로그 글
- GopherCon Talks
- Golang Korea에서 주최하는 밋업, 세미나 및 컨퍼런스의 발표 자료들을 모아두는 저장소
- Go Developer Community
- Go Developer Community에서 제공하는 Go 콘텐츠 뉴스레터 모음