이미 소장하고 있다면 판매해 보세요.
|
1장 Go와의 첫 만남 1
1.1 Go 언어로 최신 컴퓨팅 환경이 당면한 과제 해결하기 2 1.2 Hello, Go 10 1.3 요약 11 2장 Go 간단히 살펴보기 13 2.1 프로그램 아키텍처 14 2.2 main 패키지 15 2.3 Search 패키지 18 2.4 RSS 검색기 41 2.5 요약 49 3장 패키징과 내장 도구들 51 3.1 패키지 52 3.2 가져오기 54 3.3 init 57 3.4 Go 내장 도구의 활용 58 3.5 Go의 추가 개발자 도구 61 3.6 다른 Go 개발자와 협업하기 66 3.7 의존성 관리 67 3.8 요약 72 4장 배열, 슬라이스, 맵 73 4.1 배열의 내부 구조 및 원리 73 4.2 슬라이스의 내부 구조 및 원리 82 4.3 맵의 내부 구조 및 원리 101 4.4 요약 108 5장 Go의 타입 시스템 109 5.1 사용자정의 타입 110 5.2 메서드 114 5.3 타입의 본질 119 5.4 인터페이스 125 5.5 타입 임베딩 137 5.6 외부 노출 식별자와 비노출 식별자 146 5.7 요약 155 6장 동시성 157 6.1 동시성과 병렬성 158 6.2 고루틴 161 6.3 경쟁 상태 170 6.4 공유 자원 잠금 173 6.5 채널 179 6.6 요약 191 7장 동시성 패턴 193 7.1 Runner 패키지 193 7.2 풀링 203 7.3 work 패키지 216 7.4 요약 223 8장 표준 라이브러리 225 8.1 문서화와 소스 코드 226 8.2 로깅 228 8.3 인코딩/디코딩 239 8.4 입력과 출력 248 8.5 요약 257 9장 테스트와 벤치마킹 259 9.1 단위 테스트 259 9.2 예제 코드 279 9.3 벤치마킹 284 9.4 요약 289 찾아보기 291 |
|
Go 개발팀은 오늘날 소프트웨어 개발자들이 당면한 문제들을 훌륭하게 해결했다. 개발자들은 프로젝트를 수행할 언어를 선택하는 과정에서 개발 속도와 성능을 두고 항상 갈등해야 했다. 예를 들어, C나 C++ 같은 언어들은 빠른 수행 속도를 자랑하는 반면, Ruby나 Python 같은 언어들은 개발 기간이 짧다. Go 언어는 이 둘 사이의 균형을 잘 맞추고 있어 빠른 수행 속도를 제공하면서도 개발 기간을 단축할 수 있는 다양한 기능들을 제공한다.
_2 Go는 기품이 있으며 언어 자체의 생산성과 재미를 배가시키는 프로그래밍 요소들을 가지고 있다. 언어를 디자인한 사람들은 자신들이 필요로 했던 저수준(low-level) 프로그래밍 구조에 대한 접근을 허용하면서도 생산성을 높일 수 있는 언어를 만들어냈다. 이러한 균형의 달성은 최소화된 키워드 집합과 내장 함수, 그리고 간결한 문법 덕분에 가능했다고 볼 수 있다. 또한 Go는 매우 광범위한 표준 라이브러리를 지원한다. 이 표준 라이브러리는 프로그래머가 실제 세계의 웹 및 네트워크 기반 프로그램을 구현하는 데 필요한 모든 핵심 패키지들을 제공하고 있다. _13 오늘날의 프로그램들은 필연적으로 데이터의 컬렉션(collection)을 읽고 저장하는 기능을 필요로 한다. 만일 데이터베이스나 파일을 사용하거나 웹에 접근한다면 송수신 데이터를 관리할 수 있는 방법이 반드시 필요하다. Go는 데이터의 컬렉션을 관리하기 위해 배열(array), 슬라이스(slice), 맵(map)의 세 가지 데이터 구조를 제공한다. 이 데이터 구조들은 언어 내에 녹아있어 표준 라이브러리 내에서도 활발하게 활용된다. _73 Go는 정적 타입(statically typed) 프로그래밍 언어다. 즉, 컴파일러가 프로그램 내의 모든 값의 타입을 정확히 알고 있다는 뜻이다. 컴파일러가 타입 정보를 미리 알고 있으면 프로그램이 값 들을 더 안전하게 활용할 수 있다. 이를 통해 잠재적인 메모리 문제와 버그를 줄일 수 있음은 물론 컴파일러가 더 나은 코드를 생성할 수 있는 기회를 가질 수 있게 된다. _109 프로그램은 하나의 작업을 실행하기 위한 일련의 코드를 쭉 실행한 후 종료되도록 작성하는 경우가 많다. 사실 이런 타입의 프로그램은 주로 작성 및 유지보수가 쉽기 때문에 가능한 한항상 이 방식을 선택하는 것이 옳다. 그러나 여러 작업을 동시적(concurrently)으로 실행하는 것이 훨씬 도움이 되는 경우도 있다. 데이터를 조회하기 위한 여러 개의 요청을 개별적인 소켓으로 동시에 전달받는 웹 서비스가 좋은 예다. 각각의 소켓 요청은 유일한 것이어서 다른 것들과 독립적으로 처리할 수 있다. 이런 요청을 동시적으로 실행할 수 있다면 이런 종류의 시스템의 전반적인 속도는 몰라보게 향상될 수 있을 것이다. Go는 이런 점을 염두에 두고 언어와 런타임 차원에서 동시성을 직접 지원할 수 있도록 만들어졌다. ---p.157 |