
공봉식
저자:공봉식
13년차게임서버프로그래머로다양한장르의온라인게임을개발했습니다.넥슨과네오위즈를거쳐서현재는EA캐나다에서근무중입니다.「TuckerProgramming」유튜브채널을운영합니다.
00개발환경구축-윈도우,MacOS,리눅스
[1단계탄탄하게기초문법다지기]
01HelloGoWorld
__1.1Go역사
__1.2Go언어특징
__1.3코드가실행되기까지
__1.4HelloGoWorld코드뜯어보기
02변수
__2.1변수란?
__2.2변수선언
__2.3변수에대해더알아보기
__2.4변수선언의다른형태
__2.5타입변환
__2.6변수의범위
__2.7숫자표현
핵심요약/연습문제
03fmt패키지를이용한텍스트입출력
__3.1표준입출력
__3.2표준입력
__3.3키보드입력과Scan()함수의동작원리
핵심요약/연습문제
04연산자
__4.1산술연산자
__4.2비교연산자
__4.3실수오차
__4.4논리연산자
__4.5대입연산자
__4.6연산자우선순위
핵심요약/연습문제
05함수
__5.1함수정의
__5.2함수를호출하면생기는일
__5.3함수는왜쓰나?
__5.4재귀호출
핵심요약/연습문제
06상수
__6.1상수선언
__6.2상수는언제사용하나?
__6.3타입없는상수
__6.4상수와리터럴
핵심요약/연습문제
07if문
__7.1if문기본사용법
__7.2그리고&&,또는||
__7.3중첩if
__7.4if초기문;조건문
핵심요약/연습문제
08switch문
__8.1switch문동작원리
__8.2switch문을언제쓰는가?
__8.3다양한switch문형태
__8.4const열거값과switch
__8.5break와fallthrough키워드
핵심요약/연습문제
09for문
__9.1for문동작원리
__9.2continue와break
__9.3중첩for문
__9.4중첩for문과break,레이블
핵심요약/연습문제
10배열
__10.1배열
__10.2배열사용법
__10.3배열은연속된메모리
__10.4다중배열
핵심요약/연습문제
11구조체
__11.1선언및기본사용
__11.2구조체변수초기화
__11.3구조체를포함하는구조체
__11.4구조체크기
__11.5프로그래밍에서구조체의역할
핵심요약/연습문제
12포인터
__12.1포인터란?
__12.2포인터는왜쓰나?
__12.3인스턴스
__12.4스택메모리와힙메모리
핵심요약/연습문제
13문자열
__13.1문자열
__13.2문자열순회
__13.3문자열합치기
__13.4문자열구조
__13.5문자열은불변이다
핵심요약/연습문제
14패키지
__14.1패키지
__14.2패키지사용하기
__14.3Go모듈
__14.4패키지명과패키지외부공개
__14.5패키지초기화
핵심요약/연습문제
15[Project]숫자맞추기게임만들기★☆☆☆
__15.1해법
__15.2사전지식
__15.3랜덤한숫자생성하기
__15.4숫자값입력받기
__15.5숫자맞추기완성하기
핵심요약/연습문제
[2단계고급기법으로Go레벨업하기]
16슬라이스
__16.1슬라이스
__16.2슬라이스동작원리
__16.3슬라이싱
__16.4유용한슬라이싱기능활용
__16.5슬라이스정렬
핵심요약/연습문제
17메서드
__17.1메서드선언
__17.2메서드는왜필요한가?
__17.3포인터메서드vs값타입메서드
핵심요약/연습문제
18인터페이스
__18.1인터페이스
__18.2인터페이스왜쓰나?
__18.3덕타이핑
__18.4인터페이스기능더알기
__18.5인터페이스변환하기
핵심요약/연습문제
19함수고급편
__19.1가변인수함수
__19.2defer지연실행
__19.3함수타입변수
__19.4함수리터럴
핵심요약/연습문제
20자료구조
__20.1리스트
__20.2링
__20.3맵
__20.4맵의원리
핵심요약/연습문제
21에러핸들링
__21.1에러반환
__21.2에러타입
__21.3패닉
핵심요약/연습문제
22고루틴과동시성프로그래밍
__22.1스레드란?
__22.2고루틴사용
__22.3고루틴의동작방법
__22.4동시성프로그래밍주의점
__22.5뮤텍스를이용한동시성문제해결
__22.6뮤텍스와데드락
__22.7또다른자원관리기법
핵심요약/연습문제
23채널과컨텍스트
__23.1채널사용하기
__23.2컨텍스트사용하기
핵심요약/연습문제
24제네릭프로그래밍
__24.1제네릭프로그래밍소개
__24.2제네릭함수
__24.3제네릭타입
__24.4언제제네릭프로그래밍을사용해야하는가?
__24.5제네릭을사용해만든유용한기본패키지
핵심요약/연습문제
25[Project]단어검색프로그램만들기★★☆☆
__25.1해법
__25.2사전지식
__25.3실행인수읽고파일목록가져오기
__25.4파일을열어서라인읽기
__25.5파일검색프로그램완성하기
__25.6개선하기
핵심요약/연습문제
[3단계네트워크서버개발및성능개선기법익히기]
26테스트와벤치마크하기
__26.1테스트코드
__26.2테스트주도개발
__26.3벤치마크
핵심요약/연습문제
27프로파일링으로성능개선하기
__27.1특정구간프로파일링
__27.2서버에서프로파일링
핵심요약/연습문제
28[Project]HTTP웹서버만들기★★☆☆
__28.1HTTP웹서버만들기
__28.2HTTP동작원리
__28.3HTTP쿼리인수사용하기
__28.4ServeMux인스턴스이용하기
__28.5파일서버
__28.6웹서버테스트코드만들기
__28.7JSON데이터전송
__28.8HTTPS웹서버만들기
핵심요약/연습문제
29[Project]RESTfulAPI서버만들기★★★☆
__29.1해법
__29.2사전지식:RESTfulAPI
__29.3RESTfulAPI서버만들기
__29.4테스트코드작성하기
__29.5특정학생데이터반환하기
__29.6학생데이터추가/삭제하기
__29.7RESTfulAPI로의발전
__29.8Gin으로서버만들기
핵심요약/연습문제
30[Project]gnet과gRPC으로채팅앱만들기★★★★
__30.1gnet을이용해서echo서버제작
__30.2클라이언트제작
__30.3채팅서버제작
__30.4gRPC란?
__30.5gRPC를이용한채팅프로그램
핵심요약/연습문제
[Tucker노트]
노트A.Go문법보충수업
_A.1배열과슬라이스
_A.2forrange
_A.3입출력처리
_A.4알아두면유용한go명령어
_A.5cgo로C언어호출하기
_A.6godoc
_A.7Embed
노트B.생각하는프로그래밍
_B.1Go는객체지향언어인가?
_B.2구조체에생성자를둘수있나?
_B.3포인터를사용해도복사가일어나나?
_B.4값타입을쓸것인가?포인터를쓸것인가?
_B.5구체화된객체와관계하라고?
_B.6Go언어가비지컬렉터
_B.6Go언어가비지컬렉터
★EA,넥슨를거쳐현‘2K게임즈’서버전문가가알려주는
★Go언어를내것으로만드는비법
구글이개발한Go는고성능비동기프로그래밍에유용한언어입니다.이책은Go언어로‘나만의프로그램’을만들수있게이끌어줍니다.프로그래밍초보자도쉽고명확하게이해할수있도록학습목표를일목요연하게제시하고핵심내용을정리해보여줍니다.언어문법과예제작동순서를그림을곁들여설명하고,단계별로프로젝트를구현하며프로그래밍을직접체험할수있게했습니다.
★Go언어함께공부하세요!
Tucker저자와함께단톡방에서함께공부해요!
open.kakao.com/o/g3tvsk9c
★MustHave시리즈안내
MustHave시리즈는내것으로만드는시간을드립니다.명확한학습목표와핵심정리를제공하고,간단명료한설명과다양한그림으로학습효과를극대화합니다.설명과예제를제공해응용력을키워줍니다.할수있습니다.포기는없습니다.지금당장밑줄긋고메모하고타이핑하세요!MustHave가여러분의성장을돕겠습니다.
★개정판은어떻게달라졌을까요?
이책의1판이출간되고나서각종서점에서베스트셀러로등극했습니다.그해세종도서학술부문에선정되었습니다.출간당시에는Go언어가신생언어로서국내에생소한편이었으나이제세컨드프로그래밍언어로널리사용되고있습니다.이에기초설명을줄이고,새로추가된제네릭기능(24장)과gin,gnet,gRPC를사용한서버프로그래밍내용(28,29,30장)을보강했습니다.또한웹서비스성능을점검하고개선하는프로파일링(27장)도소개합니다.이책한권이면이제더탄탄히Go언어에입문해서버를개발하고테스트할수있는지식을얻을수있을겁니다.
★50만뷰가증명하는GO언어명강사를만나자
Go언어1등유튜버Tucker가더체계적으로Go언어를알려줍니다.문법만알려드리는데그치지않습니다.Go프로그래밍능력을길러드리는것이목표입니다.Go언어에입문해,커뮤니티와구글링으로현업문제를해쳐나갈수있는문턱까지안내해드립니다.포기하지않고예제하나하나를타이핑해가며공부하면반드시목표를달성할수있게구성했습니다.
★숫자로보는책의특징
_2021세종도서학술부문선정작
이책의1판은그우수성을인정받아세종도서학술부문에선정되었습니다.2판은한층더전문성을보강했으니Go언어입문과네트워크서버프로그래밍까지저자를믿고선택해주세요!
_1.22Go언어최신버전
1.16버전에서가장중요한변화는Go모듈사용이기본이라는점입니다(14.3절).다른하나는embed기능입니다(A.7절).1.18버전에서는제네릭이추가되었습니다(24장).
_3단계로익히는Go언어
1단계에서Go기본문법을익히고,2단계에서는고급기능을익힙니다.3단계에서는다양한네트워크서버프로그래밍기법과성능테스트및개선방법을배워전문성을높여줍니다.
_5가지난이도프로젝트구현
입문수준의프로젝트부터완성된웹서비스까지프로젝트를제공합니다.
___★☆☆☆숫자맞추기게임만들기
___★★☆☆단어검색프로그램만들기
___★★☆☆HTTP웹서버만들기
___★★★☆RESTfulAPI서버만들기
___★★★★Todo리스트웹서비스만들기
_80개연습문제
각장마다연습문제를제공해놓치기쉬운핵심을되짚어보고직접프로그래밍을해볼수있게했습니다.직접만들어보는횟수만큼실력이늘어납니다.모든연습문제를풀어,이책을100%활용하세요.
_200여개예제제공
200개가넘는예제를활용해설명합니다.책에등장하는예제를하나씩따라할때마다프로그래밍실력이차곡차곡쌓이도록충실히,때로는그림을활용해서설명했습니다.
★대상독자께드리는편지
_다른언어를배운적이있는프로그래밍초보자께
눈만으로는무엇도얻을수없습니다.시간이걸리더라도반드시직접타이핑해가면서책을읽어주세요.저자의유튜브Go언어강의도활용하시면도움이될겁니다.너무어렵다면〈깊이보기〉는스킵해도좋습니다.
_다른언어를사용하는현업프로그래머께
모던언어로서Go언어는다양한프로그래밍기법과개념을지녔습니다.다른언어의문법을배웠다고해서Go언어에서제공하는모든개념을다알수는없습니다.같지만다른듯사용하는개념과기법도적지않습니다.기존에익혔던언어와비교해가면서읽어보세요.예제코드를먼저분석해이해가안될때만상세설명을참조하면빠르게책을읽을수있을겁니다.
_현업에서Go언어를사용하는프로그래머께
입문자눈높이에맞혀쉬운언어로차근차근설명해,너무쉽고속도감이떨어진다고느낄수있습니다.쉬운말로설명했다고해서쉬운내용만담지는않았습니다.이책은RESTfulAPI,Gin,gnet,gRPC을활용하는서버네트워크프로그래밍과성능테스트,성능개성방법까지전문성있게다루고있습니다.이미아는내용은건너뛰면서끝까지읽어주세요
★저자와4문4답
[Q]해외에서Go언어인기가어느정도인지요?
A.해외뿐아니라국내에서도Go언어인기는날로증가하고있습니다.Go언어는그심
플함과강력한성능으로소위개발자가즐거워지는언어라고이야기를합니다.
〈StackOverflowDeveloperSurvey2023〉에따르면일반적으로사용하고있는언어13위(13.24%),2022년대비급여가가장많이오른언어10위에올랐습니다.앞선2020년에는Go언어는사랑받는언어5위,배우고싶은언어3위,미국에서10년차기준연봉이높은언어4위에올르기도했습니다.2024년1분기기준으로깃허브에서풀리퀘스트가많은언어3위에랭크될만큼많이사용됩니다.스타3위,푸시7위,이슈6위이며,매년순위가상승중입니다.
[Q]Go언어,열심히활용하는기업이나프로젝트를알려주세요.
A.아무래도Go언어를만든구글에서가장활발히사용합니다.대표적으로구글에서
만든마이크로서비스오케스트레이션시스템인쿠버네티스가있습니다.구글외프로젝트에서는컨테이너시스템인도커와분산DB시스템인코크로치DB(CockroachDB)를들수있습니다.특히드롭박스는많은버그와성능상문제를해결하려고기존파이썬에서Go언어로전면교체를했습니다.그외넷플릭스등많은대형IT기업에서Go언어를사용합니다.손쉽게마이크로서비스를만들수있어서마이크로서비스시스템을사용하는스타트업에서인기가높습니다.
[Q]Go언어는어디에유용한가요?
[A]Go언어는범용프로그래밍언어로서모든분야의프로젝트에사용됩니다.특히시스템프로그래밍과백엔드프로그래밍에많이사용됩니다.Go언어는쉽고예외상황이적은문법과빠른성능을제공합니다.2009년에발표된이후10년넘게일관되고쉬운문법이라는기조를유지해왔습니다.이런특징덕분에빠른개발이필요한스타트업과높은성능이필요한시스템프로그래밍에서Go언어사용이늘고있습니다.암호화폐,웹서버,DB,백엔드시스템등에서활발히사용됩니다.
[Q]마지막으로독자께깨알책자랑부탁드립니다.
[A]영광스럽게도이책은2021년세종도서학술부문에선정되었습니다.중학생때처음프로그래밍C언어를독학했습니다.그시절멘토도없이말이죠.중학생이던나와같은처지에있는분께올바르고따뜻한길을제시하고싶은마음으로책을집필했습니다.그럼마음이잘투영되어영광스러운선정작이되었다고생각합니다.
★이책의구성
Go언어1등유튜버Tucker가더체계적으로Go언어를알려줍니다.문법만알려드리는데그치지않습니다.Go프로그래밍능력을길러드리는것이목표입니다.Go언어에입문해,네트워크서버프로그래밍과성능점검과개선방법까지안내해드립니다.포기하지않고예제하나하나를타이핑해가며공부하면반드시목표를달성할수있게구성했습니다.
_1단계가볍게Go입문하기
Go언어기본문법을알아봅시다.기초가튼튼해야견고한건축물을지을수있듯기본문법을제대로익혀야훌륭한코드를짤수있습니다.1단계끝에서는★하나수준초간단프로젝트로‘숫자맞추기’프로그램을만들어보며마무리하겠습니다.
_2단계고급기법으로Go레벨업하기
Go언어고급문법을알아봅시다.메서드,인터페이스,다양한함수활용방법을살펴봅니다.상황에맞게자료구조를선택하는방법과예외상황에대처하는방법도배웁니다.고루틴,채널,컨텍스트를활용한Go언어만의독특한동시성프로그래밍도배우게됩니다.24장에서1.18버전에추가된제네릭을소개합니다.마지막장에서는★두개수준프로젝트로파일에서원하는단어를찾는프로그램을만들어보며더발전된Go프로그래머로레벨업해드립니다.
_3단계네트워크서버개발및성능개선기법익히기
3단계는어엿한Go언어프로그래머로첫발을내딛을수있도록돕는데목적이있습니다.Go언어문법은이미다배웠습니다.이제문법을넘어서Go프로그래머로성장해야합니다.지금까지배운것을바탕으로26장과27장에서성능테스트및개선방법을,28장에서는웹서버를만듭니다.그리고29장에서는‘RESTfulAPI서버’,30장에서는‘실시간채팅프로그램만들기’프로젝트를함께진행해보고마무리합니다.
_Tucker노트
본문에서미처다루지못한Go문법,생각하는프로그래밍,Go언어를Go답게쓰는방법을알려드립니다.저자Tucker의특별한노트를만나보세요.
__노트A.Go문법보충수업
__노트B.생각하는프로그래밍
