Pro Go : Golang을 이용한 안정적이고 효율적인 소프트웨어 프로그래밍 - 에이콘 프로그래밍 언어 시리즈

Pro Go : Golang을 이용한 안정적이고 효율적인 소프트웨어 프로그래밍 - 에이콘 프로그래밍 언어 시리즈

$56.33
저자

애덤프리먼

저자:애덤프리먼(AdamFreeman)

경험이풍부한IT전문가로다양한회사에서고위직을역임했다.가장최근에는글로벌은행의최고기술책임자(CTO)및최고운영책임자(COO)를역임했다.지금은은퇴하고글쓰기와장거리달리기에시간을보내고있다.



역자:김지원

현대자동차에서클라우드서비스개발자로근무하고있으며,2021년부터현재까지Go언어를활용해다양한시스템을개발하고있다.요즘은Go언어로쿠버네티스오퍼레이터를개발하면서열심히공부중이다.

목차


1부―Go언어이해

1장.첫번째Go애플리케이션
__시나리오설정
__개발도구설치
____Git설치
____코드에디터선택
__프로젝트생성
__자료형과컬렉션
__HTML템플릿생성
____템플릿가져오기
__HTTP핸들러와서버생성하기
__폼핸들링함수작성하기
____폼데이터처리하기
__데이터유효성검사추가하기
__요약

2장.책의내용과구성
__왜Go를배워야할까?
__Go의단점은무엇인가?
__Go를사용하는것이후회될까?
__무엇을알아야할까?
__이책의구조는어떻게돼있는가?
____1부:Go언어이해
____2부:Go표준라이브러리사용
____3부:Go활용
__이책에서다루지않는것은무엇인가?
__이책의오류를발견하면어떻게하면되는가?
__예제가많은가?
__예제에필요한소프트웨어는무엇인가?
__예제를실행하는플랫폼은무엇인가?
__예제를따라가다문제가발생하면어떻게하는가?
__어디에서예제코드를다운로드할수있는가?
__일부예제에서이상한형식이있는이유는무엇인가?
__저자와어떻게연락하는가?
__이책에대한즐거움을공유하고싶은가?
__이책에분노를느끼고불평을하고싶은가?
__요약

3장.Go도구사용
__Go명령어사용
__Go프로젝트생성
____패키지선언이해
____import문이해
____함수이해
____코드실행문이해
__소스코드컴파일및실행
____정리
____GoRun명령어사용
____모듈정의
__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:마무리및배포
__관리기능완성
____리포지터리확장
____요청핸들러구현
____템플릿생성
__관리기능접근제한
____사용자스토어및요청핸들러생성
____애플리케이션구성
__웹서비스생성
__배포준비
____인증서설치
____애플리케이션구성
____애플리케이션빌드
____도커데스크톱설치
____도커구성파일생성
__요약

출판사 서평

이책에서다루는내용

-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년간주말마다공부하던시간이소중하게느껴집니다.중간중간포기하고싶은마음도들었지만많은분의도움이있었기때문에성공적으로마무리할수있었던것같습니다.첫번역이라아쉬운부분이많지만원서가전달하려던지식과정보를독자에게정확하게전달하기위해노력했습니다.