본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 경품

Go 언어 실전 테크닉 Go 언어의 특징만 콕 집어 해설한

프로그래밍 언어 시리즈
마츠키 마사유키 , 후지와라 슌이치로, mattn, 나카시마 다이치, 마키 다이스케, 스즈키 켄타 지음 | 박현태 옮김 | 에이콘출판 | 2017년 08월 16일 출간
  • 정가 : 22,000원
    판매가 : 19,800 [10%↓ 2,200원 할인]
  • 제휴할인가 : 18,810 교보-KB국민카드 5% 청구할인(실적무관) 카드/포인트 안내
  • 통합포인트 :
    [기본적립] 1,100원 적립 [5% 적립] 안내 [추가적립] 5만원 이상 구매 시 2천원 추가적립 [회원혜택] 우수회원 5만원 이상 구매 시 2~3% 추가적립
  • 추가혜택 :
    naver네이버페이 결제 시 무조건 1% 추가 적립 payco페이코 결제 시 최대 1만원 적립 okcashbag 실 결제 금액의 0.5% 적립 안내
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    12월 19일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 영업점에서 직접 수령 안내
행사도서 포함, 5만원이상 구매시 2018년 캘린더 증정
닫기
  • 비모 벽시계
  • 자기계발:버리거나 혹은 얻거나
  • 경제경영 메인이벤트
  • 예비초등학생 추천도서전

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 올해의 IT도서 트렌드, 영예의 주인공은 어떤 책일까요?
    2017.11.28 ~ 2017.12.31
  • 에이콘의 도서를 한 눈에 살펴보세요
    2017.11.23 ~ 2019.12.31
  • 설문참여 시 매월 5명 추첨통해 선물을 드립니다.
    10. 14 ~ 12. 31
상품상세정보
ISBN 9791161750262(1161750266)
쪽수 280쪽
크기 191 * 236 * 18 mm /670g 판형알림

책소개

이 책이 속한 분야

구글에 의해 개발된 가볍고 성능이 뛰어난 Go 언어, 이 책에서는 실전에서 Go 언어를 사용 중인 개발자들이 축적한 노하우를 바탕으로 Go 언어를 설명한다. 꼭 짚고 넘어가야 할 Go 언어의 특징에 대해서는 예제로 독자들의 이해를 최대한 높이기 위해 노력하고, 굳이 설명하지 않아도 되는 문법적인 요소는 과감히 생략했다. 이 책으로 Go 언어의 특징과 장점에 대해 이해시키고 프로그램을 개발하는 데 있어 Go 언어를 적재적소에 활용할 수 있도록 돕는다

저자소개

저자 : 마츠키 마사유키

저자 마츠키 마사유키(松木 雅幸), mattn, 후지와라 순이치로, 나카시마 다이치(中島 大一), 마키 다이스케(牧 大輔), 스즈키 켄타(鈴木 健太)는 업무에서 Go를 활용 중인 집필자들로, 실제로 Go를 사용하는 동안 축적한 노하우를 이 한 권에 다 담았다. 트위터 @songmu의 계정에서 만날 수 있다.

저자 : 후지와라 슌이치로

저자 : mattn

저자 : 나카시마 다이치

저자 : 마키 다이스케

역자 : 박현태

역자 박현태는 2007년 현해탄을 건너 일본에 정착 후 10년간 일본의 IT업계에서 종사하며 금융권 인프라와 개발 업무를 거쳐 지금은 일본계 IT벤처 그룹에서 7년간 근무 중이다.
지금의 회사에서는 클라우드 서비스 개발팀의 매니저로 주로 자사의 퍼블릭/프라이빗 클라우드 서비스의 설계/개발/운영보수와 데이터 센터 업무까지 두루두루 섭렵 중에 있다.
2011년부턴 클라우드 인프라 스트럭처 오픈소스인 OpenStack에 관심이 있어, 자사의 퍼블릭 클라우드 서비스인 ConoHa, Z.com Enterprise Cloud 등의 서비스를 OpenStack으로 개발했으며, 2015년 OpenStack summit Tokyo에서는 ConoHa 클라우드의 멀티 리전(multi-region)에 대해서도 발표했다.
최근에는 클라우드 서비스의 개발과 더불어 해마다 늘어나는 자사 클라우드 서비스의 자동 구축에 관한 디플로이(deploy) 프로젝트를 진행 중에 있다.

작가의 말

이 책은 구글에서 개발한 프로그래밍 언어 Go의 장단점에 정통한 최전선 현역 개발자들이 Go에 관한 다양한 팁과 편리한 사용방법을 소개하는 책이다. 이 책을 손에 든 여러분은 이미 특정 프로그래밍 언어를 잘 다루고 있다고 생각하지만 굳이 Go를 배울 필요가 있을까? 엄밀하게는 상황에 따라 대답이 달라질 수도 있지만 여러분이 사용 가능한 언어가 C 또는 이른바 로우 레벨(low Level)이라는 경량 언어(Ruby/Perl/Python 등)라면 대답은 상당히 높은 확률로 “YES”일 것이다.
C를 이용한다면 컴파일러의 지원을 받아 타입 검사를 하면서 메모리 관리를 포함한 모든 동작을 관리하고, 효율적으로 최대한의 성능을 발휘하는 프로그래밍을 할 수 있다. 하지만 C는 로우 레벨 언어이므로 프로그래밍이 생각보다 쉽지가 않다.
경량 언어는 프로그래밍이 간단하지만 성능을 생각만큼 낼 수 없을뿐더러 정적 타입 검사의 혜택도 받을 수 없다고 생각한 적은 없었는지? 그런 사람에겐 GO가 적절한 언어이다! GO는 경량 언어와 C 등의 로우 레벨 언어 사이에서 지금까지 해결 방법이 없었던 틈새를 채워주는 언어인 셈이다. 그럼 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 패키지

__4.4 서브 커맨드를 가진 CLI 툴 - 서드 파티 패키지의 활용
____서드 파티 패키지 소개
____urfave/cli
____spf13/cobra
____docopt/docopt.go
____mitchellh/cli
____google/subcommands
____mitchellh/cli의 사용방법
____서브 커맨드의 정의
____서브 커맨드 사용하기
____서브 커맨드에 플래그 붙이기

__4.5 사용하기 쉽고, 운용보수하기에 쉬운 툴 - 서드 파티 패키지의 활용
____사용하기 쉬운 툴
____종료 스테이터스 코드
____주의점
____표준 출력과 표준 오류 출력
____오류 메시지
____운용보수하기에 쉬운 툴
____Go의 CLI 테스트 테크닉
____스테이터스 코드 테스트
____출력 메시지 테스트
____마무리


5장. The Dark Arts Of Reflection

__5.1 동적인 타입 판별 - 실행 때까지 타입 판별을 기다리기
____타입 검출과 어써션 타입의 한계

__5.2 reflect 패키지 - 타입 정보 얻기와 조작
____reflect 패키지를 사용해 얻을 수 있는 정보
____reflect.Value
____타입보다 동작 바꾸기
____map인 경우의 처리
____struct인 경우의 처리
____reflect.Type
____struct 파스하기

__5.3 reflect 사용 예 - 함정에 빠지지 않기 위한 대처방법
____값을 동적으로 생성하기
____보이는 범위, 보이지 않는 범위
____포인터와 interface값
____Set 가능한 값
____reflect로 interface의 충족 여부 확인
____동적인 select 문 구축

__5.4 reflect 성능 정리 - 적재적소에 사용하기
____reflect와 어써션 타입의 비교
____reflect에 의한 sort
____마무리


6장. Go의 테스트 관련 툴 세트

__6.1 Go의 테스트 방식 - ‘명시’와 ‘심플’
____소프트웨어 테스트
____Go의 테스트

__6.2 testing 패키지 입문 - 테스트 실행과 테스트 코드의 작성
____테스트 실행 방법
____Testable Examples
____Unordered output
____Exmaples를 godoc에 싣기

__6.3 벤치 마크 입문 - 문자열 결합의 예로 배우기
____벤치 마크 실행 방법
____서브 벤치 마크 이용

__6.4 테스트의 실전 테크닉 - 배열 플로우, 목업, 커버리지
____Table Driven Tests
____reflect.DeepEqual 사용하기
____Race Detector를 이용해
____충돌 상태 검출하기
____TestMain으로 테스트 제어
____Build Constraints를 이용한 테스트 전환
____테스트의 변수 또는 함수의 대체
____인터넷을 이용한 목업
____net/http/httptest 패키지
____테스트 커버리지
____Go에서의 테스트 마무리

출판사 서평

★ 이 책에서 다루는 내용 ★
■ 팀 개발의 시작 방법
■ 멀티 플랫폼에의 대응
■ 애플리케이션 작성 테크닉
■ 커맨드 라인 툴 작성
■ reflect/테스트 툴

★ 옮긴이의 말★
왜 Go 언어는 좋은 언어인가? 좋은 언어라면 과연 어떠한 점이 기존의 언어와 다르며 그 특징은 무엇인가? 이 질문에 대해 한 권의 책으로 최대한 독자들의 이해를 돕기 위해 저자들이 각자의 경험을 바탕으로 이야기를 풀어냈다.
물론 기존의 언어와 비교했을 때 모든 부분에서 압도적으로 뛰어나다고는 할 수 없다. 하지만 현실적 노선에서 각 언... 더보기

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면 통합포인트를 드립니다.
결제 90일 이내 작성 시 300원 / 발송 후 5일 이내 작성시 400원 / 이 상품의 첫 리뷰 작성 시 500원
(포인트 적립은 작성 후 다음 날 혹은 해당 도서 출고 후 익일에 적립됩니다.
외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외)
안내
  • 해당도서의 리뷰가 없습니다.

Klover 평점/리뷰 (0)

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①양서-판매정가의 12%, ②일서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

이 분야의 베스트

더보기+

이 분야의 신간

더보기+

바로가기

  • 우측 확장형 배너 2

최근 본 상품