Must Have Tucker의 Go 언어 프로그래밍
책 소개
★ EA, 넥슨를 거쳐 현 ‘2K 게임즈’ 서버 전문가가 알려주는
★ Go 언어를 내 것으로 만드는 비법
구글이 개발한 Go는 고성능 비동기 프로그래밍에 유용한 언어입니다. 이 책은 Go 언어로 ‘나만의 프로그램’을 만들 수 있게 이끌어줍니다. 프로그래밍 초보자도 쉽고 명확하게 이해할 수 있도록 학습 목표를 일목요연하게 제시하고 핵심 내용을 정리해 보여줍니다. 언어 문법과 예제 작동 순서를 그림을 곁들여 설명하고, 단계별로 프로젝트를 구현하며 프로그래밍을 직접 체험할 수 있게 했습니다.
★ Go 언어 함께 공부하세요!
Tucker 저자와 함께 단톡방에서 함께 공부해요!
https://open.kakao.com/o/g3tvsk9c
17년 차 게임 서버 프로그래머로 다양한 장르의 온라인 게임을 개발했다. 넥슨과 네오위즈, EA 등을 거쳐 현재 2K Games에서 근무 중이다. [Tucker Programming] 유튜브 채널을 운영하고 있다.
목차
00 개발 환경 구축 - 윈도우, MacOS, 리눅스
[1 단계 탄탄하게 기초 문법 다지기]
01 Hello Go World
__1.1 Go 역사
__1.2 Go 언어 특징
__1.3 코드가 실행되기까지
__1.4 Hello Go World 코드 뜯어보기
02 변수
__2.1 변수란?
__2.2 변수 선언
__2.3 변수에 대해 더 알아보기
__2.4 변수 선언의 다른 형태
__2.5 타입 변환
__2.6 변수의 범위
__2.7 숫자 표현
핵심 요약 / 연습문제
03 fmt 패키지를 이용한 텍스트 입출력
__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 상수와 리터럴
핵심 요약 / 연습문제
07 if문
__7.1 if문 기본 사용법
__7.2 그리고 &&, 또는 ||
__7.3 중첩 if
__7.4 if 초기문; 조건문
핵심 요약 / 연습문제
08 switch문
__8.1 switch문 동작 원리
__8.2 switch문을 언제 쓰는가?
__8.3 다양한 switch문 형태
__8.4 const 열거값과 switch
__8.5 break와 fallthrough 키워드
핵심 요약 / 연습문제
09 for문
__9.1 for문 동작 원리
__9.2 continue와 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.3 Go 모듈
__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.2 defer 지연 실행
__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.1 HTTP 웹 서버 만들기
__28.2 HTTP 동작 원리
__28.3 HTTP 쿼리 인수 사용하기
__28.4 ServeMux 인스턴스 이용하기
__28.5 파일 서버
__28.6 웹 서버 테스트 코드 만들기
__28.7 JSON 데이터 전송
__28.8 HTTPS 웹 서버 만들기
핵심 요약 / 연습문제
29 [Project] RESTful API 서버 만들기 ★★★☆
__29.1 해법
__29.2 사전 지식 : RESTful API
__29.3 RESTful API 서버 만들기
__29.4 테스트 코드 작성하기
__29.5 특정 학생 데이터 반환하기
__29.6 학생 데이터 추가/삭제하기
__29.7 RESTful API로의 발전
__29.8 Gin으로 서버 만들기
핵심 요약 / 연습문제
30 [Project] gnet과 gRPC으로 채팅 앱 만들기 ★★★★
__30.1 gnet을 이용해서 echo 서버 제작
__30.2 클라이언트 제작
__30.3 채팅 서버 제작
__30.4 gRPC란?
__30.5 gRPC를 이용한 채팅 프로그램
핵심 요약 / 연습문제
[Tucker 노트]
노트 A. Go 문법 보충 수업
_A.1 배열과 슬라이스
_A.2 for range
_A.3 입출력 처리
_A.4 알아두면 유용한 go 명령어
_A.5 cgo로 C 언어 호출하기
_A.6 go doc
_A.7 Embed
노트 B. 생각하는 프로그래밍
_B.1 Go는 객체지향 언어인가?
_B.2 구조체에 생성자를 둘 수 있나?
_B.3 포인터를 사용해도 복사가 일어나나?
_B.4 값 타입을 쓸 것인가? 포인터를 쓸 것인가?
_B.5 구체화된 객체와 관계하라고?
_B.6 Go 언어 가비지 컬렉터
_B.6 Go 언어 가비지 컬렉터