HOME > 상세정보

상세정보

디스커버리 Go 언어 (17회 대출)

자료유형
단행본
개인저자
염재현
서명 / 저자사항
디스커버리 Go 언어 = Discovery Go / 염재현 지음
발행사항
서울 :   한빛미디어,   2016  
형태사항
324 p. : 삽화 ; 24 cm
ISBN
9788968482687
일반주기
구글 Go 언어 가독성 승인자가 알려주는 실전 Go 언어의 재발견  
색인수록  
000 00000cam c2200205 c 4500
001 000045867930
005 20160321113315
007 ta
008 160321s2016 ulka 001c kor
020 ▼a 9788968482687 ▼g 93000
035 ▼a (KERIS)BIB000014025341
040 ▼a 241050 ▼c 241050 ▼d 211009
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b G573 2016z1
100 1 ▼a 염재현
245 1 0 ▼a 디스커버리 Go 언어 = ▼x Discovery Go / ▼d 염재현 지음
260 ▼a 서울 : ▼b 한빛미디어, ▼c 2016
300 ▼a 324 p. : ▼b 삽화 ; ▼c 24 cm
500 ▼a 구글 Go 언어 가독성 승인자가 알려주는 실전 Go 언어의 재발견
500 ▼a 색인수록
945 ▼a KLPA

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 G573 2016z1 등록번호 121236045 도서상태 대출중 반납예정일 2021-09-17 예약 예약가능 R 서비스 M
No. 2 소장처 세종학술정보원/과학기술실/ 청구기호 005.133 G573 2016z1 등록번호 151338560 도서상태 대출가능 반납예정일 예약 서비스
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 G573 2016z1 등록번호 121236045 도서상태 대출중 반납예정일 2021-09-17 예약 예약가능 R 서비스 M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 세종학술정보원/과학기술실/ 청구기호 005.133 G573 2016z1 등록번호 151338560 도서상태 대출가능 반납예정일 예약 서비스

컨텐츠정보

책소개

Go는 범용 프로그래밍 언어로, 깔끔하고 간결하게 생산성 높은 프로그래밍이 가능하다. 작성한 코드를 빠르게 컴파일하고 가비지 컬렉션을 지원하며, 정적 자료형 언어이지만 동적 자료형 언어로 프로그램을 작성하는 것 같은 기분을 느끼게 해주는 매력적인 언어다. 또한 동시성을 지원하는 코드를 쉽게 작성할 수 있다.

이렇게 멋진 Go 언어를 이 책으로 배워야 하는 이유는 간단하다. 구글 Go 언어 코드 가독성 승인 권한을 가진 저자가 좋은 코드와 나쁜 코드 그리고 멋진 코드를 두루 살펴보면서 얻은 노하우를 실전에 유용하게 Go 언어를 쓸 수 있게 이 책에 모두 담았기 때문이다. 이 책을 읽고 난 독자는 Go 언어 문법을 아는 사람이 아닌 Go 언어 프로그래머로 성장하게 될 것이다.

실전에서 쓰는 Go 언어를 익히는 가장 확실한 방법
Go는 범용 프로그래밍 언어로, 깔끔하고 간결하게 생산성 높은 프로그래밍이 가능합니다. 작성한 코드를 빠르게 컴파일하고 가비지 컬렉션을 지원하며, 정적 자료형 언어이지만 동적 자료형 언어로 프로그램을 작성하는 것 같은 기분을 느끼게 해주는 매력적인 언어입니다. 또한 동시성을 지원하는 코드를 쉽게 작성할 수 있습니다.
이렇게 멋진 Go 언어를 이 책으로 배워야 하는 이유는 간단합니다. 구글 Go 언어 코드 가독성 승인 권한을 가진 저자가 좋은 코드와 나쁜 코드 그리고 멋진 코드를 두루 살펴보면서 얻은 노하우를 실전에 유용하게 Go 언어를 쓸 수 있게 이 책에 모두 담았기 때문입니다. 이 책을 읽고 난 독자는 Go 언어 문법을 아는 사람이 아닌 Go 언어 프로그래머로 성장하게 될 겁니다.

★ 왜 Go 언어를 배워야 할까요?
굉장히 생산성이 좋은 언어고요. 제 경우는 파이썬을 완전히 대체해버렸어요. 저는 예전에 파이썬으로 작성하던 작업들을 Go로 작성하게 되고 그게 또 여러모로 편하더라고요.
'팟캐스트 나는 프로그래머다' 중에서, 염재현

1. 웹 서버부터 OS까지, 도커도 Go로 만들어졌다!
가상화의 결정판 도커는 Go 언어로 개발되었다. 인플럭스DB, 라임, 구글 컨테이너 관리 시스템 퀴베르네시스(Kubernetes) 등 불과 5년 만에 이룬 성과로 볼 수 없을 정도로 엄청난 프로젝트에 Go 언어가 사용된다. Go 언어의 생산성은 파이썬을 뛰어넘을 정도라고 저자는 말한다. 클라우드 배포가 용이하고 풍부한 라이브러리가 뒷받침되고 있어 향후 Go 언어의 미래는 장밋빛이다.
2. 웹 서버, 웹 브라우저, 봇, 검색 엔진, 컴파일러, OS 개발까지! 엄청난 양의 프로젝트들은 방대한 라이브러리가 뒷받침하여 가능한 것이었다. Go 언어로 만들지 못하는 것이 없을 정도다!
3. Go 언어는 시작부터 꿈의 언어다.
2007년 켄 톰슨, 롭 파이크, 로버트 그리즈머가 모여 새로운 언어를 기획했고 후에 이안 테일러와 러스 콕스가 합류했다. 컨 톰슨은 유닉스를 만들었고 C 언어 모체인 B 언어를 개발했다. 롭 파이크는 UTF-8을 켄 톰슨과 만든 인물이다.

★ 이 책으로 Go 언어를 익혀야 할 12가지 이유
수많은 Go 언어를 다루는 책 중에서 이 책을 선택해야 할 이유는 다음과 같습니다.

1. 다양한 플랫폼에 대응한 설치와 설정 방법을 알려준다. Chocolatey를 이용한 간편 윈도우 설치도 기대할 수 있다.
2. 외우지 않고 문법을 이해하게 해준다.
3. C/C++, 자바, 파이썬 등 다른 언어를 습득한 기존 개발자의 이해를 돕고자 적절한 설명을 덧붙였다.
4. 저자의 풍부한 경험으로 적절한 쓰임새를 알려준다.
5. 프로그램 동작 원리에 대한 깊은 이해가 묻어나는 설명을 한다.
6. 개발자에게 필요한 부분을 명확히 하여 빠르게 배울 수 있게 한다.
7. 코드 가독성은 덤이다. 이 책에 쓰임 모든 코드는 코드 가독성을 고려하여 작성되었다.
8. 언어의 특징을 알아보고 해결책을 제시한다.
9. Go로 프로그래밍하는 실전 방법을 알려준다.
10. Go 언어가 가진 언어적 특징의 한계를 뛰어 넘는 방법을 알려준다.
11. 코드 예제는 항상 기초적인 테스트와 함께 제공된다.
12. 웹상의 자료에서는 쉽게 배울 수 없는 깊이가 있다.

저자는 구글 본사에서 근무하며 Go 코드 가독성 승인 권한을 통해 쟁쟁한 프로그래머들의 수없이 많은 코드를 봐왔다. 그러한 저자의 경험에서 얻은 노하우가 담긴 이 책은 최신 Go 언어 버전을 기반으로 독자가 정말 Go를 잘 배워 잘 활용할 수 있게 하는 후회 없는 선택이 될 것이다.

★ 이 책의 독자층
이 책은 Go 언어의 세계로 빠져들고자 하는 호기심 충만한 독자 여러분들을 대상으로 한다. 하지만 어느 정도 프로그래밍 배경 지식이 있어야 한다.

● 이미 다른 주요 언어로 프로그래밍을 경험해본 독자들을 대상으로 했다. 이는 Go 언어를 첫 프로그래밍 언어로 배우는 독자들은 많지 않을 것이라는 가정을 바탕으로 했다. 이미 프로그래밍을 해본 경험이 있는 독자들에게 불필요할 수 있는 기본적인 내용은 많이 건너뛰었다. 건너뜀으로써 책의 내용을 더 간결하게 할 수 있고 궁금한 부분에 더 쉽게 집중할 수 있기 때문이다.
● 몰라도 큰 문제가 없거나 부딪혀 보면 바로 알 수 있는 부분들은 과감히 생략했다. 어떤 방식으로 코드를 작성하면 컴파일 오류를 내고, 바로 어떻게 작성해야 올바른지를 쉽게 알 수 있는 경우라면 굳이 설명하지 않고 생략한 경우가 많다.
● 직관적으로 알기 어렵거나 잘못된 방식을 사용하면서 그것이 잘못되었다는 것을 바로 알기 어려워서 많은 시간을 들여 시행착오를 거쳐야 하는 것들은 조금 더 지면을 할애하여 제시하고 설명했다. 따라서 기본적인 Go 프로그래밍을 배운 뒤에 이미 코드를 작성하고 있는 분들도 이 책에서 많은 것들을 얻어갈 수 있게 구성했다.

★ 이 책의 구성
● 1장 : Go 언어를 간단히 소개하고, 바로 프로그램을 실행해볼 수 있게 놀이터 사용법과 간단한 변수 선언과 함수 정의 및 호출을 포함한 전체적인 프로그램 구조를 다룬다.
● 2장 : Go 언어를 직접 설치하고 설정하면서 몇 가지 편집기 설정에 대해서도 다룬다. 패키지 디렉터리의 구조도 다룬다.
● 3장 : 문자열과 자료구조를 다루고 입출력 함수들을 사용하는 방법을 다룬다.
● 4장 : 함수와 메서드를 정의하고 이용하는 법을 다룬다.
● 5장 : 구조체와 인터페이스에 대하여 다룬다.
● 6장 : 웹 애플리케이션을 만들어보면서 몇 가지 개념을 다룬다.
● 7장 : 고루틴과 채널, 그리고 동시성 패턴들을 다룬다.
● 8장 : 실무에서 부딪힐 수 있는 문제들과 패턴들을 Go에서 구현하는 방법에 대하여 알아본다.

★ 디스커버리만의 이유 있는 설명 방식을 만나보세요!
문법을 익힌다고 프로그래밍을 할 수 있는 건 아니다. 게다가 문법을 무조건 외운다고 언어를 이해하는 것도 아니다. Go 언어는 문장 끝에 세미콜론을 쓰지 않는다. 일반적인 문법 위주의 책은 그렇게 이야기하고 넘어간다. 하지만 이 책은 이렇게 설명한다.

1: package main
2:
3: import "fmt"
4:
5: func main() {
6: fmt.Println("Hello, playground")
7: }

언뜻 기본 예제 코드들을 살펴보니 Go 언어는 세미콜론(;)을 끝에 붙이지 않는 것처럼 보입니다. 사실 Go 컴파일러는 세미콜론으로 구분된 코드를 해석합니다. 구문 분석기가 소스 코드를 스캔하는 과정에서 단순한 규칙을 적용하여 자동으로 붙이게 됩니다. 그렇기 때문에 줄이 끝난 것처럼 보이기만 해도 세미콜론이 붙어서 컴파일러에게 전달됩니다. 따라서 한 줄로 쓰기에는 너무 긴 코드를 여러 줄에 나눠 쓸 때는 주의해야 합니다. 더 구체적으로 말하자면 쉼표나 연산자, 여는 괄호 등으로 끝이 나면 줄이 끝나지 않은 것처럼 보이기 때문에 세미콜론이 붙지 않습니다. 따라서 위의 main 함수는 아래와 같이 쓸 수 없습니다.

1: // ERROR!
2: func main()
3: {
4: fmt.Println("Hello, playground")
5: }

2행이 닫는 괄호로 끝나기 때문에 단순한 전처리기는 세미콜론을 여기에 붙여버려서 구문 오류가 발생합니다. 앞으로 배워나가는 중에 이것과 관련하여 실수하기 쉬운 부분이 있으면 그때마다 간단히 짚고 넘어가겠습니다.

피상적인 문법을 알려드리는 게 아니라 왜 그런지 깊숙한 곳에서 언어 동작 원리를 알려주고 실수하기 쉬운 곳을 집어준다. 이것이 바로 언어를 배우는 새로운 방법, 디스커버리가 추구하는 설명 방식이다.


정보제공 : Aladin

저자소개

염재현(지은이)

서울대학교 컴퓨터공학부에서 좋아하는 컴퓨터 공부를 하였다. 학교 졸업 후에는 8년 정도 구글에서 소프트웨어 엔지니어로 근무하였다. 관심 분야는 자동화인데, 그중에서도 컴퓨터로 하기 가장 적합한 인간 지능의 자동화다. 무엇이든 비틀어보는 경향이 있고 소시민적 삶을 살면서 작은 고정관념을 깨보는 것이 취미다. 현재 미국 실리콘밸리 마운틴 뷰에 거주한다.

정보제공 : Aladin

목차

CHAPTER 1 시작하기 
1.1 Go 언어 소개 
__1.2 첫 프로그램 
__1.2.1 Go 놀이터 
__1.2.2 기본 예제 코드 
1.3 자료형 및 변수 
__1.3.1 변수 선언 
__1.3.2 자료형 추론 
1.4 함수와 간단한 제어 구조 
1.5 마치며 
1.6 연습 문제 

CHAPTER 2 환경 설정하기 
2.1 설치하기 
__2.1.1 압축 파일로 설치하기 
__2.1.2 소스를 컴파일하여 설치하기 
__2.1.3 PATH에 go 실행 파일 경로 추가하기 
__2.1.4 GOROOT 설정하기 
__2.1.5 Chocolatey로 윈도우 개발환경 간편 설치하기 
2.2 작업 공간 설정하기 
__2.2.1 Git 설치하기 
__2.2.2 작업 디렉터리 (GOPATH) 작성하기 
__2.2.3 작업 공간 내의 실행 파일들에 PATH 설정하기 
__2.2.4 내 컴퓨터에서 코드 작성해보기 
__2.2.5 패키지와 라이브러리 
2.3 편집기 설정하기 
__2.3.1 LiteIDE 
__2.3.2 Emacs 
__2.3.3 Vim 
__2.3.4 Atom 
__2.3.5 Wide 
2.4 도구 사용하기 
__2.4.1 godoc 
__2.4.2 Oracle 
__2.4.3 Vet 
__2.4.4 Fix 
__2.4.5 Test 
2.5 마치며 

CHAPTER 3 환경 설정하기 
3.1 문자열 
__3.1.1 유니코드 처리 
__3.1.2 Example 테스트 
__3.1.3 바이트 단위 처리 
__3.1.4 패키지 문서 
__3.1.5 문자열 잇기 
__3.1.6 문자열을 숫자로 
3.2 배열과 슬라이스 
__3.2.1 배열 
__3.2.2 슬라이스 
__3.2.3 슬라이스 덧붙이기 
__3.2.4 슬라이스 용량 
__3.2.5 슬라이스의 내부 구현 
__3.2.6 슬라이스 복사 
__3.2.7 슬라이스 삽입 및 삭제 
__3.2.8 스택 
3.3 맵 
__3.3.1 맵 사용하기 
__3.3.2 집합 
__3.3.3 맵의 한계 
3.4 입출력 
__3.4.1 io.Reader와 io.Writer 
__3.4.2 파일 읽기 
__3.4.3 파일 쓰기 
__3.4.4 텍스트 리스트 읽고 쓰기 
__3.4.5 그래프의 인접 리스트 읽고 쓰기 
3.5 마치며 
3.6 연습문제 

CHAPTER 4 함수 
4.1 값 넘겨주고 넘겨받기 
__4.1.1 값 넘겨주기 
__4.1.2 둘 이상의 반환값 
__4.1.3 에러값 주고받기 
__4.1.4 이름 있는 결과 인자(Named return parameter) 
__4.1.5 가변인자 
4.2 값으로 취급되는 함수 
__4.2.1 함수 리터럴(Function literal) 
__4.2.2 고계 함수(High-order function) 
__4.2.3 클로저(Closure) 
__4.2.4 생성기 
__4.2.5 이름 있는 자료형 
__4.2.6 이름 있는 함수형 
__4.2.7 인자 고정 
__4.2.8 패턴의 추상화 
__4.2.9 자료구조에 담은 함수 
4.3 메서드 
__4.3.1 단순 자료형 메서드 
__4.3.2 문자열 다중 집합 
__4.3.3 포인터 리시버 
__4.3.4 공개 및 비공개 
4.4 활용 
__4.4.1 타이머 활용하기 
__4.4.2 path/filepath 패키지 
4.5 마치며 
4.6 연습문제 

CHAPTER 5 구조체 및 인터페이스 
5.1 구조체 
__5.1.1 구조체 사용법 
__5.1.2 const와 iota 
__5.1.3 테이블 기반 테스트 
__5.1.4 구조체 내장 
5.2 직렬화와 역직렬화 
__5.2.1 JSON 
__5.2.2 Gob 
5.3 인터페이스 
__5.3.1 인터페이스의 정의 
__5.3.2 커스텀 프린터 
__5.3.3 정렬과 힙 
__5.3.4 외부 의존성 줄이기 
__5.3.5 빈 인터페이스와 형 단언 
__5.3.6 인터페이스 변환 스위치 
5.4 마치며 
5.5 연습문제 

CHAPTER 6 웹 애플리케이션 작성하기 
6.1 Hello, 세계! 
6.2 할 일 목록 관리 웹 앱 만들기 
__6.2.1 RESTful API 
__6.2.2 Data Access Object 
__6.2.3 RESTful API 핸들러 구현 
__6.2.4 RESTful 서버 완성 
__6.2.5 HTML 템플릿 작성하기 
6.3 코드 리팩토링 
__6.3.1 통일성 있게 파일 나누기 
__6.3.2 라우터 사용하기 
6.4 추가 주제 
__6.4.1 HTTP 파일 서버 
__6.4.2 몽고디비와 연동하기 
6.5 마치며 
6.6 연습문제 

CHAPTER 7 동시성 
7.1 고루틴 
__7.1.1 병렬성과 병행성 
__7.1.2 고루틴 기다리기 
7.2 채널 
__7.2.1 일대일 단방향 채널 소통 
__7.2.2 생성기 패턴 
__7.2.3 버퍼 있는 채널 
__7.2.4 닫힌 채널 
7.3 동시성 패턴 
__7.3.1 파이프라인 패턴 
__7.3.2 채널 공유로 팬아웃하기 
__7.3.3 팬인하기 
__7.3.4 분산처리 
__7.3.5 select 
__7.3.6 파이프라인 중단하기 
__7.3.7 컨텍스트(context.Context) 활용하기 
__7.3.8 요청과 응답 짝 짓기 
__7.3.9 동적으로 고루틴 이어붙이기 
__7.3.10 주의점 
7.4 경쟁 상태 
__7.4.1 동시성 디버그 
__7.4.2 atomic과 sync.WaitGroup 
7.5 문맥 전환 
7.6 마치며 
7.7 연습문제 

CHAPTER 8 실무 패턴 
8.1 오버로딩 
__8.1.1 연산자 오버로딩 
8.2 템플릿 및 제너릭 프로그래밍 
__8.2.1 유닛 테스트 
__8.2.2 컨테이너 알고리즘 
__8.2.3 자료형 메타 데이터 
__8.2.4 go generate 
8.3 객체지향 
__8.3.1 다형성 
__8.3.2 인터페이스 
__8.3.3 상속 
__8.3.4 캡슐화 
8.4 디자인 패턴 
__8.4.1 반복자 패턴 
__8.4.2 추상 팩토리 패턴 
__8.4.3 비지터 패턴 
8.5 마치며

관련분야 신착자료