◈이책에서다루는내용◈
◆실전에서의Go활용방법
◆안정적이고동시성을지원하는고성능코드
◆슬라이스,배열,맵,포인터등의데이터구조
◆리플렉션과인터페이스를활용한재사용가능한패키지개발
◆효과적인Go프로그래밍을위한제네릭활용
◆동시성있는RESTful서버및gRPC클라이언트와서버개발
◆JSON데이터를이용하는Go구조체정의
◈이책의대상독자◈
Go에관련한지식을좀더넓히고싶은중급Go프로그래머를대상으로한다.다른프로그래밍언어에대한경험이있는상태에서Go를배우고싶은개발자도기초를볼필요없이곧바로Go를익힐수있을것이다.
◈이책의구성◈
1장,‘Go의간략한소개’에서는Go의역사와Go의중요한특징및장점부터소개한다.Godoc과godoc유틸리티를소개하고,Go프로그램을컴파일하고실행하는방법을설명한다.그런다음엔결과를출력하는방법과사용자입력을받는방법,커맨드라인인수를다루는방법,로그파일의사용법을다룬다.마지막으로전화번호부애플리케이션의기본버전을개발해보고이후장에서이를발전시켜나간다.
2장,‘기본타입’에서는Go의기본타입들을알아보고같은데이터타입들을모아사용할수있는배열과슬라이스도알아본다.Go의포인터,상수,날짜및시간을다루는방법도알아보고마지막에서는난수를생성해전화번호부애플리케이션의데이터를무작위데이터로채워본다.
3장,‘합성데이터타입’에서는맵,구조체,struct키워드를살펴본다.또한정규표현식과패턴매칭,CSV파일도다룬다.마지막으로전화번호부애플리케이션의데이터가영속적으로저장되게만든다.
4장,‘리플렉션과인터페이스’에서는리플렉션,인터페이스,데이터타입에대한함수인타입메서드를다룬다.또한sort.Interface인터페이스를사용해슬라이스를정렬하는방법,빈슬라이스,타입단언,타입스위치,error데이터타입등을다룬다.그리고Go에서객체지향개념을흉내내는방법을살펴보고전화번호부애플리케이션도개선한다.
5장,‘패키지와함수’에서는패키지의주요한원소인패키지,모듈,함수를다룬다.PostgreSQL데이터베이스와상호작용하는패키지를개발하고문서화한다.또한defer키워드를설명하고깃랩러너와깃허브액션을통한자동화및Go바이너리의도커이미지생성도알아본다.
6장,‘유닉스시스템’에게작업지시에서는시스템프로그래밍을살펴본다.다루는주제는커맨드라인인수받기,유닉스시그널처리,파일입출력,io.Reader와io.Writer인터페이스,viper와cobra패키지등이포함돼있다.또한JSON,XML,YAML파일을다루는방법,유닉스파일시스템에서순환참조를찾는방법,Go바이너리에파일임베딩,os.ReadDir()함수,os.DirEntry타입,io/fs패키지등을살펴본다.마지막으로cobra패키지로전화번호부애플리케이션을적절한커맨드라인유틸리티로변환하고JSON데이터를사용하게개선한다.
7장,‘Go의동시성’에서는고루틴,채널,파이프라인을다룬다.프로세스,스레드,고루틴의차이점을살펴보고,sync패키지및Go스케줄러의동작방식도알아본다.또한select키워드와여러종류의Go채널,공유메모리,뮤텍스,sync.Mutex타입,sync.RWMutex타입도알아본다.그리고context패키지와semaphore패키지,워커풀,고루틴타임아웃,경쟁상태감지등도소개한다.
8장,‘웹서비스만들기’에서는net/http패키지,웹서버및웹서비스개발,프로메테우스로메트릭노출,그라파나로메트릭시각화,웹클라이언트및파일서버개발등을실습한다.또한전화번호부애플리케이션을웹서비스로변환하고이를위한커맨드라인클라이언트도생성한다.
9장,‘TCP/IP와웹소켓’에서는net패키지,TCP/IP,TCP와UDP프로토콜,유닉스소켓,웹소켓프로토콜을다룬다.또한많은종류의네트워크서버와클라이언트를개발한다.
10장,‘RESTAPI’에서는RESTAPI와RESTful서비스를다룬다.RESTAPI를정의해보고동시성을지원하는RESTful서버및RESTful서비스의클라이언트로동작하는커맨드라인유틸리티를개발한다.마지막으로RESTAPI의문서화를위한스웨거를소개하고바이너리파일을업로드및다운로드하는방법도알아본다.
11장,‘코드테스팅과프로파일링’에서는코드테스팅,코드최적화,코드프로파일링,크로스컴파일,Go코드벤치마킹,예제함수만들기,go:generate의사용법,도달할수없는Go코드를찾는법등을다룬다.
12장,‘gRPC’에서는Go에서gRPC를다룬다.또한gRPC서비스의메서드와메시지를정의하는방법을살펴보고이를Go코드로어떻게변환하는지알아본다음gRPC서비스의서버및클라이언트를개발한다.
13장,‘제네릭’에서는제네릭과제네릭함수를작성하기위한문법,제네릭데이터타입을정의하는방법을알아본다.
부록A,‘Go가비지컬렉터’에서는Go가비지컬렉터의동작과가비지컬렉터가코드의성능에끼치는영향을살펴본다.