1부 - Go 언어 이해1장. 첫 번째 Go 애플리케이션__시나리오 설정__개발 도구 설치____Git 설치____코드 에디터 선택__프로젝트 생성__자료형과 컬렉션__HTML 템플릿 생성____템플릿 가져오기__HTTP 핸들러와 서버 생성하기__폼 핸들링 함수 작성하기____폼 데이터 처리하기__데이터 유효성 검사 추가하기__요약2장. 책의 내용과 구성__왜 Go를 배워야 할까?__Go의 단점은 무엇인가?__Go를 사용하는 것이 후회될까?__무엇을 알아야 할까?__이 책의 구조는 어떻게 돼 있는가?____1부: Go 언어 이해____2부: Go 표준 라이브러리 사용____3부: Go 활용__이 책에서 다루지 않는 것은 무엇인가?__이 책의 오류를 발견하면 어떻게 하면 되는가?__예제가 많은가?__예제에 필요한 소프트웨어는 무엇인가?__예제를 실행하는 플랫폼은 무엇인가?__예제를 따라가다 문제가 발생하면 어떻게 하는가?__어디에서 예제 코드를 다운로드할 수 있는가?__일부 예제에서 이상한 형식이 있는 이유는 무엇인가?__저자와 어떻게 연락하는가?__이 책에 대한 즐거움을 공유하고 싶은가?__이 책에 분노를 느끼고 불평을 하고 싶은가?__요약3장. Go 도구 사용__Go 명령어 사용__Go 프로젝트 생성____패키지 선언 이해____import 문 이해____함수 이해____코드 실행문 이해__소스 코드 컴파일 및 실행____정리____Go Run 명령어 사용____모듈 정의__Go 코드 디버깅____디버거 준비____디버거 사용____Delve 에디터 플러그인 사용__Go 코드 린팅____린터 사용____린터 규칙 비활성화____린터 설정 파일 생성__Go 코드 내 보편적인 문제 해결__Go 포매팅 지정__요약4장. 기본 자료형, 값, 포인터__4장 준비__Go 표준 라이브러리 사용__기본 자료형 이해____리터럴 값 이해__상수 사용____타입 없는 상수 이해____단일 코드 실행문으로 여러 상수 정의____리터럴 값 재방문__변수 사용____변수 자료형 생략____변수 값 할당 생략____단일 코드 실행문으로 여러 변수 정의____짧은 변수 선언 구문 사용____변수를 재정의하기 위한 짧은 변수 구문 사용__빈 식별자 사용__포인터 이해____포인터 정의____포인터 역참조____포인터 제로 값 이해____포인터를 가리키는 포인터____왜 포인터는 유용한가__요약5장. 연산과 변환__5장 준비__Go 연산자 이해____산술 연산자 이해____문자열 연결____비교 연산자 이해____논리 연산자 이해__값 변환, 파싱, 포매팅____명시적 타입 변환____부동 소수점 값을 정수로 변환____문자열 파싱____문자열 값 포매팅__요약6장. 흐름 제어__6장 준비__흐름 제어 이해__if 문 사용____else 키워드 사용____if 문 범위 이해____if 문으로 초기화 문 사용__for 루프 사용____루프에 조건 통합____초기화 및 종결문 사용____루프 지속____시퀀스 열거__switch 문 사용____여러 값 일치____다음 case 문으로 폴스루 강제 실행____default 문 제공____초기화 문 사용____비교 값 생략__라벨 문 사용__요약7장. 배열, 슬라이스, 맵 사용__7장 준비__배열 작업____배열 리터럴 구문 사용____배열 타입 이해____배열 값 이해____배열 비교____배열 열거__슬라이스 작업____슬라이스에 항목 추가____한 슬라이스를 다른 슬라이스에 추가____배열에서 슬라이스 생성____배열에서 슬라이스 생성할 때 용량 명시____다른 슬라이스에서 슬라이스 생성____copy 함수 사용____슬라이스 항목 삭제____슬라이스 열거____슬라이스 정렬____슬라이스 비교____슬라이스 기반 배열__맵 작업____맵 리터럴 구문 사용____맵 항목 확인____맵 항목 제거____맵 열거__문자열의 이중 특성 이해____문자열을 rune으로 변환____문자열 열거__요약8장. 함수 정의 및 사용__8장 준비__간단한 함수 정의__함수 매개변수 정의 및 사용____매개변수 타입 생략____매개변수 이름 생략____가변 매개변수 정의____함수 매개변수로 포인터 사용__함수 결과 정의 및 사용____여러 함수 결과 반환__defer 키워드 사용__요약9장. 함수 타입 사용__9장 준비__함수 타입 이해____함수 비교와 제로 타입 이해____인수로 함수 사용____결과로 함수 사용__함수 타입 별칭 생성__리터럴 함수 구문 사용____함수 변수 범위 이해____함수 값 직접 사용____함수 클로저 이해__요약10장. 구조체 정의__10장 준비__구조체 정의 및 사용____구조체 값 생성____구조체 값 사용____구조체 값 부분 할당____필드 위치 사용해 구조체 값 생성____임베디드 필드 정의____구조체 값 비교____익명 구조체 타입 정의__구조체 값을 포함한 배열, 슬라이스, 맵 생성__구조체와 포인터 이해____구조체 포인터 편의 구문 이해____포인터 값 이해____구조체 생성자 함수 이해____구조체 필드를 위한 포인터 타입 사용____구조체 제로 값 및 구조체 포인터 이해__요약11장. 메서드 및 인터페이스 사용__11장 준비__메서드 정의 및 사용____메서드 매개변수 및 결과 정의____메서드 오버로딩 이해____포인터와 값 리시버 이해____타입 별칭으로 메서드 정의__별도 파일에 타입 및 메서드 정의__인터페이스 정의 및 사용____인터페이스 정의____인터페이스 구현____인터페이스 사용____포인터 메서드 리시버 효과 이해__인터페이스 값 비교__타입 단언 수행____타입 단언 수행 전 테스트____동적 타입에 대한 switch 문__빈 인터페이스 사용____함수 매개변수로 빈 인터페이스 사용__요약12장. 패키지 생성 및 사용__12장 준비__모듈 파일 이해__사용자 정의 패키지 생성____사용자 정의 패키지 사용____패키지 접근 제어 이해____패지지에 코드 파일 추가____패키지 이름 충돌 해결____중첩 패키지 생성____패키지 초기화 함수 사용__외부 패키지 사용____외부 패키지 관리__요약13장. 타입 및 인터페이스 합성__13장 준비__타입 합성 이해____기본 타입 정의__타입 합성____임베디드 타입 체인 생성____동일 구조체 내 여러 임베디드 타입 사용____승격 수행을 할 수 없는 상황 이해__합성과 인터페이스 이해____인터페이스 구현을 위한 합성 사용____인터페이스 합성__요약14장. 고루틴 및 채널 사용__14장 준비__Go 코드 실행 방법 이해__고루틴 추가 생성__고루틴 결과 값 반환____채널을 사용해 결과 값 전송____채널을 사용해 결과 값 수신__채널 작업____채널 조정____미정 개수 값 전송 및 수신____채널 방향 제한__select 문 사용____블로킹 없는 수신____여러 채널로 수신____블로킹 없는 전송____여러 채널로 전송__요약15장. 에러 처리__15장 준비__복구 가능한 에러 처리____에러 생성____채널을 통한 에러 보고____에러 편의 함수 사용__복구 불가능한 에러 처리____패닉 복구____복구 후 패닉____고루틴 패닉 복구__요약2부 - Go 표준 라이브러리 사용16장. 문자열 및 정규식 처리__16장 준비__문자열 처리____문자열 비교____문자열 대소문자 변환____문자 대소문자 작업____문자열 검사____문자열 조작____문자열 트리밍____문자열 변경____문자열 형성 및 생성__정규식 사용____패턴 컴파일 및 재사용____정규식을 사용한 문자열 분할____하위 표현식 사용____정규식을 사용한 부분 문자열 치환__요약17장. 문자열 포매팅 및 스캔 __17장 준비__문자열 작성__문자열 포매팅____포매팅 동사 이해____범용 포매팅 동사 사용____정수 포매팅 동사 사용____부동 소수점 포매팅 동사 사용____문자열 및 문자 포매팅 동사 사용____bool 포매팅 동사 사용____포인터 포매팅 동사 사용__문자열 스캔____개행 문자 처리____다른 문자열 소스 사용____스캔 템플릿 사용__요약18장. 수학 함수와 데이터 정렬__18장 준비__숫자 작업____난수 생성__데이터 정렬____숫자 및 문자열 슬라이스 정렬____정렬 데이터 검색____사용자 정의 자료형 정렬__요약19장. 날짜, 시간, 기간__19장 준비__날짜 및 시간 작업____날짜 및 시간 표현____기간 표현__고루틴 및 채널에 시간 기능 사용____고루틴 절전 모드 전환____함수 실행 연기____시간 지정 알림 수신____반복 알림 수신__요약20장. 데이터 읽기 및 쓰기__20장 준비__Reader 및 Writer 이해____Reader 이해____Writer 이해__Reader 및 Writer 유틸리티 함수 사용__특수 Reader 및 Writer 사용____파이프 사용____다중 Reader 연결____다중 Writer 연결____Writer에 에코 읽기____읽기 데이터 제한__버퍼링 데이터____버퍼링한 Reader 추가 메서드 사용____버퍼 쓰기 수행__Reader 및 Writer로 포매팅 및 스캔____Reader에서 값 스캔____Writer에 포매팅한 문자열 쓰기____Writer로 Replacer 사용__요약21장. JSON 데이터 작업__21장 준비__JSON 데이터 읽기 및 쓰기____JSON 데이터 인코딩____JSON 데이터 디코딩__요약22장. 파일 작업__22장 준비__파일 읽기____읽기 편의 함수 사용____파일 구조체를 사용한 파일 읽기__파일 쓰기____쓰기 편의 함수 사용____파일 구조체를 사용한 파일 쓰기____JSON 데이터 파일 쓰기__편의 함수를 사용한 새 파일 생성__파일 경로 작업__파일과 디렉터리 관리__파일 시스템 탐색____파일 존재 여부 확인____패턴을 사용한 파일 찾기____디렉터리 내 모든 파일 처리__요약23장. HTML 및 텍스트 템플릿 사용__23장 준비__HTML 템플릿 생성____템플릿 로딩 및 실행____템플릿 액션 이해__텍스트 템플릿 생성__요약24장. HTTP 서버 생성__24장 준비__간단한 HTTP 서버 생성____HTTP 리스너 및 핸들러 생성____요청 검사____요청 필터링 및 응답 생성____응답 편의 함수 사용____편의 라우팅 핸들러 사용____HTTPS 요청 지원__정적 HTTP 서버 생성____정적 파일 경로 생성__응답 생성을 위한 템플릿 사용__JSON 데이터 응답__폼 데이터 처리____폼 데이터 요청 읽기____멀티파트 폼 읽기__쿠키 읽기 및 설정__요약25장. HTTP 클라이언트 생성__25장 준비__간단한 HTTP 요청 전송____POST 요청 전송__HTTP 클라이언트 요청 구성____요청 생성을 위한 편의 함수 사용____쿠키 작업____리디렉션 관리__멀티파트 폼 생성__요약26장. 데이터베이스 작업__26장 준비____데이터베이스 준비__데이터베이스 드라이버 설치__데이터베이스 열기__스테이트먼트 및 쿼리 실행____여러 행 쿼리____플레이스홀더가 있는 명령문 실행____단일 행 쿼리 실행____기타 쿼리 실행__프리페어드 스테이트먼트 사용__트랜잭션 사용__데이터를 구조체로 스캔하기 위한 리플렉션 사용__요약27장. 리플렉션 사용 - 1부__27장 준비__리플렉션 필요성 이해__리플렉션 사용____기초 타입 기능 사용____기초 값 기능 사용__타입 식별____바이트 슬라이스 식별__기본값 얻기__리플렉션을 사용한 값 설정____다른 값을 사용한 한 값 설정__값 비교____비교 편의 함수 사용__값 변환____숫자 타입 변환__새 값 생성__요약28장. 리플렉션 사용 - 2부__28장 준비__포인터 작업____포인터 값 작업__배열 및 슬라이스 타입 작업__배열 및 슬라이스 값 작업____슬라이스 및 배열 열거____기존 슬라이스에서 새 슬라이스 생성____슬라이스 요소 생성, 복사, 추가__맵 타입 작업__맵 값 작업____맵 값 설정 및 제거____새 맵 생성__구조체 타입 작업____중복 필드 처리____이름으로 필드 찾기____구조체 태그 검사____구조체 타입 생성__구조체 값 작업____구조체 필드 값 설정__요약29장. 리플렉션 사용 - 3부__29장 준비__함수 타입 작업__함수 값 작업____새 함수 타입과 값 생성 및 호출__메서드 작업____메서드 호출__인터페이스 작업____인터페이스의 기본 값 얻기____인터페이스 메서드 검사__채널 타입 작업__채널 값 작업__새 채널 타입 및 값 생성__여러 채널 선택__요약30장. 고루틴 조정__30장 준비__대기 그룹 사용__상호 배제 사용____읽기-쓰기 뮤텍스 사용__고루틴 조정을 위한 조건 사용__함수 단일 실행 보장__콘텍스트 사용____요청 취소____데드라인 설정____요청 데이터 제공__요약31장. 단위 테스팅, 벤치마킹, 로깅__31장 준비__테스팅 사용____단위 테스트 실행____테스트 실행 관리__코드 벤치마킹____벤치마크 설정 제거____서브 벤치마크 수행__데이터 로깅____커스텀 로거 생성__요약3부 - Go 적용32장. 웹 플랫폼 생성__프로젝트 생성__기본 플랫폼 기능 생성____로깅 시스템 생성____구성 시스템 생성__서비스 관리를 위한 의존성 주입____서비스 라이프사이클 정의____내부 서비스 함수 정의____서비스 등록 함수 정의____서비스 해결 함수 정의____서비스 등록 및 사용__요약33장. 미들웨어, 템플릿, 핸들러__요청 파이프라인 생성____미들웨어 컴포넌트 인터페이스 정의____요청 파이프라인 생성____기본 컴포넌트 생성____HTTP 서버 생성____애플리케이션 구성____서비스 해결 간소화__HTML 응답 생성____레이아웃 및 템플릿 생성____템플릿 실행 구현____템플릿 서비스 생성 및 사용__요청 핸들러 소개____URL 경로 생성____핸들러 메서드를 위한 매개변수 값 준비____요청 경로 매칭__요약34장. 액션, 세션, 인가__액션 결과 도입____공통 액션 결과 정의____액션 결과 사용을 위한 플레이스홀더 업데이트__템플릿에서 요청 핸들러 호출____요청 처리 업데이트____애플리케이션 구성__경로에서 URL 생성____URL 생성자 서비스 생성__별칭 경로 정의__요청 데이터 유효성 검사____데이터 유효성 검사 수행__세션 추가____응답 데이터 쓰기 지연____세션 인터페이스, 서비스, 미들웨어 생성____세션 사용 핸들러 생성____애플리케이션 구성__사용자 인가 추가____기본 인가 타입 정의____플랫폼 인터페이스 구현____액세스 제어 구현____애플리케이션 플레이스홀더 기능 구현____인증 핸들러 생성____애플리케이션 구성__요약35장. SportsStore: 실제 애플리케이션__SportsStore 프로젝트 생성____애플리케이션 구성__데이터 모델 시작____리포지터리 인터페이스 정의____(임시) 리포지터리 구현__제품 리스트 표시____템플릿 및 레이아웃 생성____애플리케이션 구성__페이지네이션 추가__템플릿 콘텐츠 스타일링____부트스트랩 CSS 파일 설치____레이아웃 업데이트____템플릿 콘텐츠 스타일링__카테고리 필터링 지원 추가____요청 핸들러 업데이트____카테고리 핸들러 생성____제품 리스트 템플릿 내 카테고리 내비게이션 표시____핸들러 등록 및 별칭 업데이트__요약36장. SportsStore: 카트 및 데이터베이스__쇼핑 카트 형성____카트 모델 및 리포지터리 정의____카트 요청 핸들러 생성____카트에 제품 추가____애플리케이션 구성____카트 요약 위젯 추가__데이터베이스 리포지터리 사용____리포지터리 타입 생성____데이터베이스 열기 및 SQL 명령어 로딩____시드 정의 및 명령문 초기화____기본 쿼리 정의____페이징 쿼리 정의____SQL 리포지터리 서비스 정의____SQL 리포지터리 사용을 위한 애플리케이션 구성__요약37장. SportsStore: 결제 및 관리__결제 프로세스 생성____모델 정의____리포지터리 확장____임시 리포지터리 비활성화____리포지터리 메서드 및 명령어 정의____요청 핸들러 및 템플릿 생성__관리 기능 생성____제품 관리 기능 생성____카테고리 관리 기능 생성__요약38장. SportsStore: 마무리 및 배포__관리 기능 완성____리포지터리 확장____요청 핸들러 구현____템플릿 생성__관리 기능 접근 제한____사용자 스토어 및 요청 핸들러 생성____애플리케이션 구성__웹 서비스 생성__배포 준비____인증서 설치____애플리케이션 구성____애플리케이션 빌드____도커 데스크톱 설치____도커 구성 파일 생성__요약