이미 소장하고 있다면 판매해 보세요.
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: 마무리 및 배포 __관리 기능 완성 ____리포지터리 확장 ____요청 핸들러 구현 ____템플릿 생성 __관리 기능 접근 제한 ____사용자 스토어 및 요청 핸들러 생성 ____애플리케이션 구성 __웹 서비스 생성 __배포 준비 ____인증서 설치 ____애플리케이션 구성 ____애플리케이션 빌드 ____도커 데스크톱 설치 ____도커 구성 파일 생성 __요약 |
Adam Freeman
애덤 프리먼의 다른 상품
이 책에서 다루는 내용
- Go 언어 및 도구에 대한 확실한 이해를 얻는다. - Go 표준 라이브러리에 대한 심층 지식을 얻는다. - 동시/병렬 작업에 Go를 사용한다. - 클라이언트 및 서버 측 개발에 Go를 사용한다. 이 책의 대상 독자 Go를 사용해 애플리케이션을 만들고 싶은 숙련된 개발자를 위한 책이다. 이 책의 구성 세 부분으로 나눠 Go 언어를 포괄적으로 소개한다. 1부는 Go 언어에 대한 전반적인 이해를 도와준다. 1부는 앱을 만드는 과정을 안내하고 Go 도구, 흐름 제어, 배열, 슬라이스 및 맵, 메서드 및 인터페이스 사용, 패키지 만들기 및 사용, 에러 처리 등을 소개한다. 2부는 Go 표준 라이브러리를 소개한다. 문자열 처리 및 정규식, 수학 함수 및 데이터 정렬, 파일 작업, HTML 및 텍스트 템플릿, 단위 테스트, 벤치마킹, 로깅, 영역을 배울 수 있다. 마지막으로 3부는 Go를 적용하는 방법을 다룬다. ‘SportsStore’ 애플리케이션을 개발하면서 웹 플랫폼, 미들웨어, 템플릿, 핸들러 등을 만드는 방법을 배울 수 있기 때문에 집에서도 쉽게 Go 개발을 할 수 있다. 각 주제는 명확하고 간결하고 실용적인 접근 방식으로 다뤄진다. 효과적인 학습에 진정으로 필요한 세부 정보로 가득 채우기 위해 장마다 일반적인 문제와 문제를 방지하는 방법을 포함하고 있다. 옮긴이의 말 Go 언어는 아주 간단한 문법으로 다른 프로그래밍 언어에 비해 굉장히 배우기 쉽습니다. 컴퓨터공학 전공 수업 과제나 실습 수준의 개발 경험만 있던 신입사원도 입사하고 일주일 만에 Go언어를 공부하고 곧바로 프로젝트에 투입돼 Go 언어로 API를 개발할 수 있습니다. 하지만 제대로 Go 언어를 사용하기는 쉽지 않습니다. 간단한 문법은 그만큼 지원하지 않는 것이 많다는 것을 의미하고 나머지는 결국 개발자의 몫이 됩니다. 예를 들면 Go 언어는 클래스 문법을 지원하지 않기 때문에 개발자가 인터페이스와 메서드를 활용해서 다형성을 구현해야 합니다. Go 언어의 강력한 장점인 고루틴도 개발자가 스레드 개념을 정확하게 인지하지 못하고 채널을 통해 고루틴을 제대로 관리할 수 없다면 동시성 프로그래밍의 장점을 누릴 수 없습니다. 사실 C 언어든 자바(Java) 언어든 어느 정도 프로그래밍 언어를 공부하고 컴퓨터 사이언스 지식이 있어야 Go가 가장 최소한의 문법으로 자유도 높은 프로그래밍을 즐길 수 있는 언어라는 것을 느낄 수 있습니다. 그런 의미에서 이 책은 간단한 문법이 특징인 Go 언어를 공부하는 책 치곤 분량이 많다고 느낄 수 있지만 다른 프로그래밍 언어보다 Go 언어의 강력함을 최대한 느낄 수 있게끔 다양한 예제와 풍부한 설명을 담고 있습니다. 개발 경험이 적은 독자에게는 섬세하게 Go 언어 프로그래밍을 알려줄 수 있으며, 개발 경험이 있는 독자에게는 여러 해답을 제시하고 생각할 거리를 던져줄 것입니다. 이 책을 번역하기 위해 약 1년 간 주말마다 공부하던 시간이 소중하게 느껴집니다. 중간중간 포기하고 싶은 마음도 들었지만 많은 분의 도움이 있었기 때문에 성공적으로 마무리할 수 있었던 것 같습니다. 첫 번역이라 아쉬운 부분이 많지만 원서가 전달하려던 지식과 정보를 독자에게 정확하게 전달하기 위해 노력했습니다. |