[도서 소개]
뚝딱거리지 않고 원래 Go 언어 개발자였던 것처럼 자연스럽게 코드 작성하기
Go 언어는 웹 서비스 개발자가 선호하는 언어로 빠르게 자리 잡고 있다. 다른 프로그래밍 언어로 개발한 경험이 있는 개발자들에게 Go 언어의 문법을 알려주는 튜토리얼은 많지만, 그것만으로는 부족하다. 이 책은 Go 언어를 이용해 명확하고 관용적으로 개발할 수 있도록 기초 지식을 전달하는 실용적인 가이드다. 개발 숙련도와는 상관없이 누구나 Go 언어 개발자처럼 생각할 수 있다. 더 나아가 경험이 풍부한 Go 개발자들이 채용한 디자인 패턴과 선택한 이유를 소개한다. 웹 서비스 관련 프로젝트에서 많이 활용되는 만큼, 견고한 웹 서비스를 제공하고 확장이 쉬운 코드로 개발하고 싶다면 Go 언어로 시작해보자.
[대상 독자]
이 책은 Go를 새롭게 시작하는 사람들에게 초점이 맞춰져 있다. Go 언어의 마스코트가 귀엽다는 것만 알고 있는 사람부터 이미 Go 튜토리얼을 수행했거나 Go로 코드를 어느 정도 개발해본 사람까지도 볼 수 있다. 단순하게 프로그램 작성법을 알려주는 것이 아니라 관용적인 방식으로 Go 코드를 작성하는 방법을 알려준다. 경험이 좀 더 많은 Go 언어 개발자라면 새롭게 추가된 기능들을 가장 잘 사용하는 방법에 대한 조언을 얻을 수 있다.
[주요 내용]
- 관용적 코드 사용법과 프로젝트 설계 배우기
- Go 언어의 효율적인 작동 원리 알아보기
- 사용자를 위한 개발 환경 구축하기
- 고급 레벨 사용자를 위한 reflect, unsafe, cgo 기능 이해하기
- Go 언어의 새로운 기능인 제네릭 살펴보기
[예제 코드]
추가 자료(예제 코드, 연습문제 등) http://github.com/learning-go-book 에서 다운로드 할 수 있다.
[서평]
이 책은 Go 언어의 기초부터 깊이 있는 내용까지 폭넓게 다루고 있다. 기본적인 개발 경험이 있으면서 Go 언어를 새롭게 배우고 싶다면 바로 이 책을 펼칠 타이밍이다. 저자의 다양한 경험을 통해 다른 언어와 차이점을 명확히 구분하고, Go 언어만의 매력을 느낄 수 있도록 구성되어 있다. 또한 실행할 수 있는 예제를 통해 Go 언어에 있는 다양한 특성을 이해시키고 확장 가능한 코드를 작성하는 좋은 방법을 제시한다.
이책은 총 15챕트로 되어 있다. 1장은 Go 개발 환경 설정으로 Go 개발 환경은 어떻게 구성하고, Go 프로그램을 빌드하고 코드 품질을 확인 하는 도구들을 소개하고 있다. 2장에서는 내장 타입의 사용, 변수를 선언하고 할당 및 연산자에 대해서 배우게 된다. 3장에서는 Go에서 사용하는 컨테이너 타입에 대해서 배우고, 구조체를 통해 자신만의 복합타입을 만드는 방법에 대해서 다루고 있다. 4장에서는 블록, 섀도잉, 제어 구조에 대해 배우고, 5장 함수에서 Go의 함수와 다른 언어의 함수들과 어떻게 다른지 장단점에 대해서 배우게 된다. 6장에서는 포인터가 무엇인지, 어떻게 사용하는지에 대해서 다루고 있다. 7장에서는 타입, 메서드, 인터페이스 및 모범 사례를 다루고 있다. 8장에서는 Go의 오류가 무엇이고 정의하는 방법과 확인하는 방법에 관해 학습한다. 그리고 panic와 recover에 대해서도 배우게 된다. 9장에서는 코드를 구성하는 방법과 Go소스 코드의 에코 시스템과 상호작용하는 방법을 배운다. 모듈 동작 방법, 패키지 내에 코드 구성방법, 서드-파티 모듈 사용법 그리고 자신의 모듈을 배포하는 방법을 알아본다. 10장에서는 동시성과 전통적인 동시성 메커니즘 보다 더 단순한 Go의 접근을 배운다. 11장에서는 표준 라이브러리에서 가장 일반적으로 사용되는 패키지 몇가지를 살펴보고 코드에서 에뮬레이트되는 모범 사례를 구현하는 방법을 본다. 12장에서는 컨텍스트를 사용하여 요청 메타 데이터를 관리하는 방법을 배운다. 타임아웃 설정, 명시적 취소 수행, 컨텍스트를 통한 값 전달 및 이런 것들을 각각 써야할 시점에 대해 알아본다. 13장에서는 테스트 작성과 테스팅, 코드 커버리지, 벤치마킹 및 데이터 경쟁 확인을 위한 Go의 내장 지원을 사용하여 코드 품질을 높이는 방법에 대해 배운다. 14장에서는 리플렉션, unsafe 및 cgo를 다루고 이런 기능은 Go를 지루하게 만드는 타입-안전하고 메모리 안전한 언어에서 규칙을 깰 수 있도록 하기 때문에 Go에서 가장 흥미로운 부분이다. 더 중요하게 규칙을 깨기 원하는 이유와 대부분은 이렇게 하는 것을 피해야하는 이유에 대해서 배우게 된다. 마지막 15장에서는 제네릭에 대해 살펴보고 문제를 해결하기 위해 Go를 사용하는 방법을 변경하는 경우를 살펴본다. 구현은 아직 배포되지 않았으므로 추가적인 변화의 가능성은 여전히 있지만 그런 변경은 최소화될 것이다.
이책의 서문을 보면 ‘제대로 작성된 Go는 지루하다, 잘 작성된 Go프로그램은 간단하고 때로는 반복적인 경향이 있다’라고 적혀 있다. 이것은 Go뿐만 아니라 모든 언어에서도 마찬가지 일것이다. 더 좋은 코드, 더 좋은 소프트웨어를 만들려면 많은 노력이 필요하다. 관용적 Go는 시간이 흐르고 팀이 바뀌더라도 코드를 유지보수하기 쉽게 만드는 도구, 관행 및 패턴의 집합이다. 성능, 새로운 기능 혹은 간결한 구문을 강조하는 Go는 앞으로의 소프트웨어 개발에 대한 Go만의 최고의 장점이 될것이라 생각한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'책이야기' 카테고리의 다른 글
[리뷰]도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지 (0) | 2022.04.24 |
---|---|
[리뷰]코틀린 완벽 가이드-코틀린 기초부터 심화 활용까지, 완벽 가이드 북 (0) | 2022.04.10 |
[리뷰]당당한 디자인 결정을 위한 9가지 방법 (0) | 2022.02.21 |
[리뷰]파이썬으로 익히는 말랑말랑 알고리즘 (0) | 2022.02.21 |
[리뷰]혼자 공부하는 R데이터 분석 (0) | 2022.02.18 |