출고예상일 안내
주문하신 상품이 한국에서 현지 배송을 위한 출고단계가 이루어질 것으로 예상되는 날짜입니다. 상품을 준비하는 과정에서 내부적인 사정으로 인해 출고예상일에 다소 오차가 생길 수 있습니다.
여러 상품(예약상품포함)을 함께 주문하신 경우 출고예상일이 가장 늦은 날짜에 맞춰 함께 배송됩니다.

Go 언어 실전 테크닉 Go 언어 실전 테크닉
원제 : みんなのGo言語
시리즈 :
에이콘 프로그래밍 언어 시리즈
[25]
마츠키 마사유키, mattn, 후지와라 슌이치로 외 저 | 박현태 역 | 에이콘출판 | 2017년 08월
- 정가
- $44.00
- 판매가
-
$32.08
(27%↓)
- 적립금
- $0.64 (2%P)
품절된 상품입니다.
이 책을 꼭 원하시는 고객님께서는 아래 "상품문의"를 클릭 후 구매의사를
알려주세요. 책이 확보 될 경우 연락 드리겠습니다.
평점 - · 리뷰 0
ISBN : 9791161750262 / 280쪽 191 x 236 (㎜)
이 상품에 궁금하신점이 있으세요? 1:1상담문의

-
코리아교육그룹 교육연구소
-
서길원, 김운호, 허상훈, 박재상, 박경규, 김종욱, 오윤우, 유지영
-
김현철, 신은경, 이민정, 박선우, 정기민, 곽소아, 정문수
-
클리커, 강민혁
- 19,800
- 31,500
- 21,420
- 23,400
출판사 리뷰
★ 이 책에서 다루는 내용 ★ ■ 팀 개발의 시작 방법 ■ 멀티 플랫폼에의 대응 ■ 애플리케이션 작성 테크닉 ■ 커맨드 라인 툴 작성 ■ reflect/테스트 툴 ★ 옮긴이의 말★ 왜 Go 언어는 좋은 언어인가? 좋은 언어라면 과연 어떠한 점이 기존의 언어와 다르며 그 특징은 무엇인가? 이 질문에 대해 한 권의 책으로 최대한 독자들의 이해를 돕기 위해 저자들이 각자의 경험을 바탕으로 이야기를 풀어냈다. 물론 기존의 언어와 비교했을 때 모든 부분에서 압도적으로 뛰어나다고는 할 수 없다. 하지만 현실적 노선에서 각 언... ★ 이 책에서 다루는 내용 ★ ■ 팀 개발의 시작 방법 ■ 멀티 플랫폼에의 대응 ■ 애플리케이션 작성 테크닉 ■ 커맨드 라인 툴 작성 ■ reflect/테스트 툴 ★ 옮긴이의 말★ 왜 Go 언어는 좋은 언어인가? 좋은 언어라면 과연 어떠한 점이 기존의 언어와 다르며 그 특징은 무엇인가? 이 질문에 대해 한 권의 책으로 최대한 독자들의 이해를 돕기 위해 저자들이 각자의 경험을 바탕으로 이야기를 풀어냈다. 물론 기존의 언어와 비교했을 때 모든 부분에서 압도적으로 뛰어나다고는 할 수 없다. 하지만 현실적 노선에서 각 언어의 좋은 특징들이 매우 조화롭게 균형이 잘 잡힌 언어가 Go라고 감히 평가하고 싶다. 그럼 왜 그렇게 평가했으며 이 책이 Go라는 언어를 알아가는 데 왜 유용한 책인가? 옮긴이는 독자들의 이해를 돕기 위해 크게 3가지 관점으로 이 책을 집필했다고 평가한다. 첫째, 실전에서 Go 언어를 사용 중인 개발자들이 축적해온 노하우를 바탕으로 풀어냈다. 둘째, 꼭 짚고 넘어가야 할 Go 언어의 특징에 대해서는 예제를 들어가며 독자들의 이해를 최대한 높이기 위한 장치를 마련해 두었다. 셋째, 굳이 설명하지 않아도 되는 문법적인 요소에 대해서는 과감히 생략하여 쉽게 읽을 수 있게 했다. 사족일지도 모르지만 클라우드 서비스를 개발 운영 중인 옮긴이도 번역하면서 Go 언어의 특징에 대해 새삼 다시 배웠고 좋은 경험이었다고 생각한다. 독자분들도 이 책을 통해 조금이라도 Go 언어의 가치에 대해 깨닫는 부분이 있었으면 하는 바람이다.
★ 지은이의 말 ★
이 책은 구글에서 개발한 프로그래밍 언어 Go의 장단점에 정통한 최전선 현역 개발자들이 Go에 관한 다양한 팁과 편리한 사용방법을 소개하는 책이다. 이 책을 손에 든 여러분은 이미 특정 프로그래밍 언어를 잘 다루고 있다고 생각하지만 굳이 Go를 배울 필요가 있을까? 엄밀하게는 상황에 따라 대답이 달라질 수도 있지만 여러분이 사용 가능한 언어가 C 또는 이른바 로우 레벨(low Level)이라는 경량 언어(Ruby/Perl/Python 등)라면 대답은 상당히 높은 확률로 “YES”일 것이다.
C를 이용한다면 컴파일러의 지원을 받아 타입 검사를 하면서 메모리 관리를 포함한 모든 동작을 관리하고, 효율적으로 최대한의 성능을 발휘하는 프로그래밍을 할 수 있다. 하지만 C는 로우 레벨 언어이므로 프로그래밍이 생각보다 쉽지가 않다.
경량 언어는 프로그래밍이 간단하지만 성능을 생각만큼 낼 수 없을뿐더러 정적 타입 검사의 혜택도 받을 수 없다고 생각한 적은 없었는지? 그런 사람에겐 GO가 적절한 언어이다! GO는 경량 언어와 C 등의 로우 레벨 언어 사이에서 지금까지 해결 방법이 없었던 틈새를 채워주는 언어인 셈이다. 그럼 Go의 장점에 대해서 살펴보자.
★ 옮긴이의 말★
왜 Go 언어는 좋은 언어인가? 좋은 언어라면 과연 어떠한 점이 기존의 언어와 다르며 그 특징은 무엇인가? 이 질문에 대해 한 권의 책으로 최대한 독자들의 이해를 돕기 위해 저자들이 각자의 경험을 바탕으로 이야기를 풀어냈다.
물론 기존의 언어와 비교했을 때 모든 부분에서 압도적으로 뛰어나다고는 할 수 없다. 하지만 현실적 노선에서 각 언어의 좋은 특징들이 매우 조화롭게 균형이 잘 잡힌 언어가 Go라고 감히 평가하고 싶다.
그럼 왜 그렇게 평가했으며 이 책이 Go라는 언어를 알아가는 데 왜 유용한 책인가? 옮긴이는 독자들의 이해를 돕기 위해 크게 3가지 관점으로 이 책을 집필했다고 평가한다. 첫째, 실전에서 Go 언어를 사용 중인 개발자들이 축적해온 노하우를 바탕으로 풀어냈다. 둘째, 꼭 짚고 넘어가야 할 Go 언어의 특징에 대해서는 예제를 들어가며 독자들의 이해를 최대한 높이기 위한 장치를 마련해 두었다. 셋째, 굳이 설명하지 않아도 되는 문법적인 요소에 대해서는 과감히 생략하여 쉽게 읽을 수 있게 했다.
사족일지도 모르지만 클라우드 서비스를 개발 운영 중인 옮긴이도 번역하면서 Go 언어의 특징에 대해 새삼 다시 배웠고 좋은 경험이었다고 생각한다. 독자분들도 이 책을 통해 조금이라도 Go 언어의 가치에 대해 깨닫는 부분이 있었으면 하는 바람이다.
1장. Go를 이용한 팀 개발의 시작 방법과 코드를 작성하는 데 있어서의 마음가짐
__1.1 개발 환경 구축 - 설치부터 $GOPATH 설정까지
____개발 환경 구축
____Go 설치
____$GOPATH 설정
____go get 시험해 보기
____Go의 REPL인 gore를 사용
____$GOPATH 관리를 위한 ghq 도입
____peco로 간단하게 리포지터리 간 이동하기
____Go로 만들어진 툴 설치
__1.2 에디터와 개발환경
____코드 포맷터, lint 툴에서 문서열람까지
____Go와 에디터
____Go에디터에 대한 사고방식
____개발 지원 툴
____코드 포맷터: gofmt
____goimports
____lint 툴: go vet과 golint
____문서 열람 툴: godoc
____그 밖의 툴: gorename,
____guru, gocode, godef, gotags
__1.3 Go 시작하기 - start a tour of Go
____학습: Tour of Go
____문서 읽기
____프로젝트 시작하기
____디렉토리명과 패키지명
____디렉토리 구성
____파일 분할
____패키지 분할
____서브 패키지의 임포트 방법
____의존 관리: vendoring과 glide
____glide novendor
____태스크 러너로써 Makefile을 사용
__1.4 Go답게 코드 작성하기 - Go를 사용하고 싶다면 Go를 따르라
____더욱 Go스러운 코드를 작성
____panic사용 않고, error를 잘 반환, 에러 체크 확실히 하기
____정규 표현을 피하고 strings 패키지를 사용
____strings패키지
____어쩔 수 없이 정규 표현을 사용하는 경우
____map 피하기
____reflect 피하기
____거대한 struct 사용, 상속하지 않기
____병렬처리의 과다 사용 피하기
____Go 코드 읽기
____테스트와 CI
____빌드와 디플로이
____모니터링
____정리
2장. 멀티 플랫폼에서 실행하는 사내 툴 만드는 방법
2.1 Go로 사내 툴을 만드는 이유 - 저마다 제각각인 건 당연한 일
__다양한 환경에 대한 대응이 불가피
____Go를 채용하는 장점
__2.2 지켜야 할 암묵적인 규칙 - OS 간의 이식을 미리 가정
____적극적으로 path/filepath 사용하기
____적극적으로 defer 사용하기
____적극적으로 UTF-8을 다루기
__2.3 TUI를 Windows에서 실행하기 - termbox와 go-colorable
____간단히 TUI 애플리케이션을 만드는 termbox
____go-colorable의 사용법
__2.4 OS 고유 처리에 대응 - runtime.GOOS와 Builds Constraints
____runtime.GOOS를 사용
____Build Constraints를 사용
____파일명에 의한 지정
____+build 주석에 의한 지정
____pkg-config: 복잡한 컴파일 옵션에 대처
__2.5 노력하기보단 주변 툴에 의존하기 - 하나의 애플리케이션에서는 하나의 처리만
____Go 애플리케이션의 데몬화(化)
____리눅스의 경우
____유닉스의 경우
____Windows의 경우
__2.6 싱글 바이너리 - go-bindata와 go-assets의 활용
____Go는 싱글 바이너리
____go-bindata를 사용
____go-assets 사용
__2.7 Windows 애플리케이션 만들기 - 다양한 사용자를 가정하기
____Windows 애플리케이션을 만드는 방법
____리소스 파일 링크하기
____GUI를 만든다면
__2.8 설정 파일 취급 - 멀티 플랫폼에서의 주의점
____설정 파일 취급 시의 주의점
____어떤 포맷으로 할까?
____INI 파일
____JSON
____YAML
____TOML
____설정 파일을 어디에 둘까?
____JSON을 잘 정리해서 출력하기
__2.9 사내 툴, 그 이후 - 멀티 플랫폼 대응 애플리케이션의 장점
____한 번 만들었다고 끝이 아니다
3장. 실용적인 애플리케이션 만들기
__3.1 머리말 - 실용적인 애플리케이션의 조건이란
____실용적인 애플리케이션이란
____어떠한 기능을 갖고 있는지를
____쉽게 알 수 있을 것
____성능이 좋을 것
____다양한 입출력을 다룰 수 있을 것
____인간이 다루기 쉬운 타입일 것
____예외의 경우에 안전하게 동작을
____정지시킬 수 있을 것
____3장에서 소개하는 테크닉
__3.2 버전 관리 - 사용자가 확인하기 쉽게 하기
____버전 번호를 바이너리에 넣기
____flag 패키지의 이용
____셸 스크립트
____go-latest로 최신 버전 체크
____GitHub 태그
____HTML 메타 태그
____JSON API
__3.3 효율적인I/O 처리 - 버퍼링, 콘텐츠 취득, 파일 저장
____bufio로 입력을 버퍼링해서 다루기
____bufio로 출력을 버퍼링하기
____LL로 출력의 자동 버퍼링하기
____Go에서는 자동 버퍼링은 하지 않는다
____버퍼 크기 지정
____go-isatty로
____출력처가 단말기인지를 판별하기
____여러 소스로부터 같은 콘텐츠 취득
____콘텐츠 취득의 흐름
____파일에서 얻기
____HTTP(S) URL에서 얻기
____Amazon S3에서 얻기
____여러 출력처에 한번에 쓰기
____로그 출력과 동시에
____메모리에 보유해 이용하기
__3.4 난수 다루기 - math/rand, crypto/rand
____난수 다루기 사례
____난수를 취급하는 표준 패키지
____math/rand
____crypo/rand
__3.5 인간이 다루기 쉬운 타입의 수치 - go-humanize
____go-humanize
____표기 변환과 파서?parser?
____표기변환
____파서
__3.6 Go에서 외부 명령 실행하기 - os/exec 패키지 활용
____외부 커맨드를 실행하는 이점
____os/exec 패키지
____os/exec 패키지의 사례
____외부 커맨드를
____셸 경유로 기동하기(유닉스계열 환경)
__3.7 타임아웃하기 - 패키지 기능의 이용과 직접 구현하기
____사용하는 패키지에
____타임아웃 기능이 준비된 경우
____직접 타임아웃 구현
__3.8 시그널 다루기 - 적절한 핸들링하기
____Go로 시그널 다루기
____독자적인 시그널 정의하기
__3.9 goroutine의 정지 - 병렬 처리, 비동기 실행의 핸들링
____goroutine을 외부에서 정지시키기
____채널을 사용하는 방법
____Context 패키지를 이용하는 방법
____마무리
4장. 커맨드 라인 툴 만들기
__4.1 왜 Go로 CLI 툴을 만드는가? - 3가지 장점
____Go로 CLI 툴을 만드는 이유
____배포의 용이성
____다양한 플랫폼에 쉽게 대응
____성능
____라쿠텐의 사례
__4.2 디자인 - 인터페이스와 리포지터리 구성
____CLI 툴 인터페이스
____싱글 커맨드 패턴
____서브 커맨드 패턴
____리포지터리 구성
____바이너리를 메인 성과물로 할 경우
____라이브러리를 메인 성과물로 할 경우
__4.3 flag 패키지 - 커맨드 라인 옵션 활용하기
____flag 패키지란
____기본적인 사용 방법
____몇 가지 테크닉
____롱 옵션과 쇼트 옵션
____환경 변수
____어디에 기술할 것인가?
____내부 구현과 커스터마이즈
____flag.IntVar 구현
____커스터마이즈하기
____범용적인 사용 방법
____한 번 더 flag.IntVar 구현 살펴보기
____독자적인 타입 정의하기
____서드 파티 패키지의 활용
____spfl3/pflag 패키지
____jessevdk/go-flags 패키지
____alecthomas/kingpin








































