Head First Go: 명확한 예제로 효율적인 학습법을 제시하는 Go 입문서

Book description

이 책은 Go 입문자가 알아야 할 것에 초점을 맞추어 Go 언어의 핵심을 간추리고 이를 쉽게, 재미있게 풀어쓴 Go 입문서입니다.

만의 독특한 형식(그림과 도식, 풍선 도움말, 대화, 문제 풀이)과 구성으로 개념을 쉽게 설명합니다. 『Head First Go』는 새로운 언어를 익히는 데 가장 흥미로운 입문서입니다.

Table of contents

  1. Head First Go (1/5)
  2. Head First Go (2/5)
  3. Head First Go (3/5)
  4. Head First Go (4/5)
  5. Head First Go (5/5)
  6. 서문
    1. 누구를 위한 책일까요?
    2. 여러분은 이렇게 생각하겠지요
    3. 그리고 여러분의 두뇌는 이렇게 생각하고 있습니다
    4. 메타인지: 생각에 관한 생각
    5. 이 책에서는 이렇게 했습니다
    6. 알아 두세요
    7. 감사의 말
  7. 1 시작해 봅시다-문법 기초
    1. 제자리에, 준비, Go!
    2. Go 플레이그라운드
    3. 이게 다 무슨 뜻인가요?
    4. 코드를 잘못 작성하면 어떻게 될까요?
    5. 함수 호출하기
    6. Println 함수
    7. 다른 패키지의 함수 사용하기
    8. 함수 반환 값
    9. Go 프로그램 템플릿
    10. 문자열
    11. 부울
    12. 숫자
    13. 산술 연산자와 비교 연산자
    14. 타입
    15. 변수 선언하기
    16. 제로 값
    17. 단축 변수 선언
    18. 네이밍 규칙
    19. 타입 변환
    20. 컴퓨터에 Go 설치하기
    21. Go 코드 컴파일하기
    22. Go 도구
    23. “go run”으로 빠르게 코드 실행해 보기
    24. Go 도구 상자
  8. 2 다음엔 어떤 코드가 실행될까요?-조건문과 반복문
    1. 메서드 호출하기
    2. 성적 계산하기
    3. 주석
    4. 사용자로부터 성적 입력 받기
    5. 함수 및 메서드에서 여러 개의 값 반환하기multiple-
    6. 첫 번째 옵션: 빈 식별자를 사용해 에러 반환 값 무시하기
    7. 두 번째 옵션: 에러 처리하기
    8. 조건문
    9. 특정 조건에서만 에러 출력하기
    10. 이름 섀도잉 피하기
    11. 문자열을 숫자로 변환하기
    12. 블록
    13. 블록과 변수 스코프
    14. 드디어 성적 프로그램을 완성했습니다!
    15. 단축 변수 선언에서 변수는 단 한 번만 새로 선언됩니다!
    16. 게임을 만들어 봅시다
    17. 패키지명 vs 임포트 경로
    18. 난수 생성하기
    19. 키보드에서 정숫값 입력받기
    20. 추측 값과 목푯값 비교하기
    21. 반복문
    22. 초기화문과 후처리문은 선택사항입니다
    23. 추측 게임에서 반복문 사용하기
    24. “continue”와 “break”를 사용한 루프 건너뛰기
    25. 추측 루프 빠져나오기
    26. 목푯값 공개
    27. 축하합니다! 게임이 완성되었습니다!
    28. Go 도구 상자
  9. 3 호출해 주세요-함수
    1. 반복되는 코드
    2. Printf와 Sprintf를 사용한 출력 형식 지정
    3. 형식 동사
    4. 형식 값 너비
    5. 소수 자릿수 너비 지정하기
    6. 페인트 계산기에서 Printf 사용하기
    7. 함수 선언하기
    8. 함수 매개변수 선언하기
    9. 페인트 계산기에서 함수 사용하기
    10. 함수와 변수 스코프
    11. 함수 반환 값
    12. 페인트 계산기에서 반환 값 사용하기
    13. paintNeeded 함수에는 에러 처리를 해야 합니다
    14. 에러 값
    15. 다중 반환 값 선언하기
    16. paintNeeded 함수에서 다중 반환 값 사용하기
    17. 항상 에러를 처리하세요!
    18. 함수의 매개변수는 인자의 복사본을 받습니다
    19. 포인터
    20. 포인터 타입
    21. 포인터 값 가져오거나 변경하기
    22. 함수에서 포인터 사용하기
    23. 포인터를 사용해 “double” 함수 문제 해결하기
    24. Go 도구 상자
  10. 4 코드 묶음-패키지
    1. 다른 프로그램, 같은 함수
    2. 패키지를 사용한 프로그램 간 코드 공유
    3. 패키지 코드는 Go 작업 공간 디렉터리 내에 위치합니다
    4. 새로운 패키지 만들기
    5. 새로 만든 패키지 가져오기
    6. 패키지는 동일한 파일 구조를 사용합니다
    7. 패키지 네이밍 컨벤션
    8. 패키지 한정자
    9. 공용 코드를 패키지로 옮겨 봅시다
    10. 상수
    11. 중첩된 패키지 디렉터리와 임포트 경로
    12. “go install”로 프로그램 실행 파일 설치하기
    13. GOPATH 환경 변수로 작업 공간 변경하기
    14. GOPATH 설정하기
    15. 패키지 배포하기
    16. “go get”으로 패키지 다운로드 및 설치하기
    17. “go doc”으로 패키지 문서 읽어 오기
    18. 문서 주석으로 패키지 문서화하기
    19. 웹 브라우저에서 문서 보기
    20. “godoc”으로 HTML 문서 띄우기
    21. “godoc” 서버에는 여러분의 패키지도 있습니다!
    22. Go 도구 상자
  11. 5 목록에서-배열
    1. 배열은 값의 컬렉션을 담고 있습니다
    2. 배열의 제로 값
    3. 배열 리터럴
    4. “fmt” 패키지의 함수는 배열을 처리할 수 있습니다
    5. 루프 내에서 배열 원소에 접근하기
    6. “len” 함수로 배열 길이 구하기
    7. “for...range”를 사용해 안전하게 배열 순회하기
    8. “for...range” 루프에서 빈 식별자 사용하기
    9. 배열에 저장된 수들의 총합 구하기
    10. 배열에 저장된 수들의 평균 구하기
    11. 텍스트 파일 읽기
    12. 텍스트 파일에서 읽어 온 데이터 배열에 저장하기
    13. “average” 프로그램에서 텍스트 파일 읽기
    14. 현재 프로그램은 세 개의 값만 처리할 수 있습니다!
    15. Go 도구 상자
  12. 6 확장 문제-슬라이스
    1. 슬라이스
    2. 슬라이스 리터럴
    3. 슬라이스 연산자
    4. 내부 배열
    5. 내부 배열을 변경하면 슬라이스도 변경됩니다
    6. “append” 함수를 사용해 슬라이스에 원소 추가하기
    7. 슬라이스와 제로 값
    8. 슬라이스와 “append” 함수를 사용해 추가 데이터 읽어 오기
    9. 개선된 프로그램 사용해 보기
    10. 에러 발생 시 nil 슬라이스 반환하기
    11. 명령줄 인자
    12. os.Args 슬라이스에서 명령줄 인자 가져오기
    13. 슬라이스 연산자는 슬라이스에도 사용할 수 있습니다
    14. 명령줄 인자를 사용하도록 수정하기
    15. 가변 인자 함수
    16. 가변 인자 사용하기
    17. 가변 인자 함수를 사용해 평균 계산하기
    18. 가변 인자 함수에 슬라이스 전달하기
    19. 슬라이스가 저를 살렸어요!
    20. Go 도구 상자
  13. 7 데이터 라벨링-맵
    1. 개표하기
    2. 파일에서 이름 읽어 오기
    3. 슬라이스로 투표 수 세기
    4. 맵 리터럴
    5. 맵에서의 제로 값
    6. 맵 변수의 제로 값은 nil입니다
    7. 할당된 값과 제로 값 구분하는 방법
    8. “delete” 함수를 사용해 키/값 쌍 삭제하기
    9. 개표 프로그램에서 맵 사용하기
    10. 맵과 함께 for...range 사용하기
    11. for...range 루프는 맵을 무작위 순서로 처리합니다!
    12. 개표 프로그램에서 for...range 루프 사용하기
    13. 개표 프로그램이 완성되었습니다!
    14. Go 도구 상자
  14. 8 저장소 만들기-구조체
    1. 슬라이스와 맵은 한 가지 타입의 값만 갖습니다
    2. 여러 타입의 값으로 구성된 구조체
    3. 도트(.) 연산자를 사용한 구조체 필드 접근
    4. 구조체에 구독자 정보 저장하기
    5. 사용자 정의 타입과 구조체
    6. 잡지 구독자 정보에 사용자 정의 타입 사용하기
    7. 함수에서 사용자 정의 타입 사용하기
    8. 함수에서 구조체 변경하기
    9. 포인터를 통한 구조체 필드 접근
    10. 포인터를 사용한 큰 구조체 전달
    11. 구조체 타입을 별도 패키지로 옮기기
    12. 사용자 정의 타입을 외부로 노출할 땐 대문자를 사용합니다
    13. 구조체 필드를 노출할 땐 대문자를 사용합니다
    14. 구조체 리터럴
    15. Employee 구조체 타입 만들기
    16. Address 구조체 타입 만들기
    17. 필드 타입으로 구조체 사용하기
    18. 내부 구조체에 값 할당하기
    19. 익명 구조체 필드
    20. 구조체 임베딩
    21. 사용자 정의 타입이 완성되었습니다!
    22. Go 도구 상자
  15. 9 나만의 타입-사용자 정의 타입
    1. 실세계에서의 타입 에러
    2. 기본 타입으로 정의한 사용자 정의 타입
    3. 사용자 정의 타입과 연산자
    4. 함수를 사용한 타입 변환
    5. 메서드를 사용한 함수명 충돌 방지
    6. 메서드 정의하기
    7. 또 다른 매개변수인 리시버 매개변수
    8. 함수와 아주 유사한 메서드
    9. 포인터 리시버 매개변수
    10. 메서드를 사용해 Liters와 Milliliters 값 변환하기
    11. 메서드를 사용해 Gallons 값 변환하기
    12. Go 도구 상자
  16. 10 당신만 알고 계세요-캡슐화와 임베딩
    1. Date 구조체 타입 만들기
    2. 사용자가 Date 구조체 필드에 잘못된 값을 넣고 있어요!
    3. 설정자 메서드
    4. 설정자 메서드에서는 포인터 리시버를 사용해야 합니다
    5. 나머지 설정자 메서드 추가하기
    6. 설정자 메서드에 유효성 검증 추가하기
    7. 필드에 잘못된 값이 들어갈 여지가 여전히 남아 있습니다!
    8. Date 타입 별도 패키지로 옮기기
    9. Date 필드 숨기기
    10. 노출된 메서드를 통해 숨겨진 필드에 접근하기
    11. 접근자 메서드
    12. 캡슐화
    13. Event 타입에 Date 타입 임베딩하기
    14. 숨겨진 필드는 승격되지 않습니다
    15. 필드와 마찬가지로 노출된 메서드도 승격됩니다
    16. Event 타입의 Title 필드 캡슐화하기
    17. 승격된 메서드는 외부 타입의 메서드와 공존합니다
    18. 달력 패키지가 완성되었습니다!
    19. Go 도구 상자
  17. 11 당신은 무엇을 할 수 있나요?-인터페이스
    1. 동일한 메서드를 가진 서로 다른 타입
    2. 한 가지 타입만 받을 수 있는 메서드 매개변수
    3. 인터페이스
    4. 인터페이스를 만족하는 타입 정의하기
    5. 구체 타입, 인터페이스 타입
    6. 인터페이스를 만족하는 타입 할당하기
    7. 인터페이스에 정의된 메서드만 호출할 수 있습니다
    8. 인터페이스를 사용해 playList 함수 수정하기
    9. 타입 단언
    10. 타입 단언 실패
    11. 타입 단언 실패 시 패닉 방지하기
    12. 타입 단언으로 TapePlayers 및 TapeRecorders 타입 확인하기
    13. “error” 인터페이스
    14. “Stringer” 인터페이스
    15. 빈 인터페이스
    16. Go 도구 상자
  18. 12 다시 일어서기-실패 복구하기
    1. 파일에서 숫자 읽어 오기
    2. 에러가 발생하면 파일이 닫히지 않습니다!
    3. 함수 호출 지연시키기
    4. 지연된 함수 호출을 사용해 에러 복구하기
    5. 지연된 함수 호출을 사용해 파일 닫기 보장하기
    6. 디렉터리 내의 파일 나열하기
    7. 하위 디렉터리 내의 파일 나열하기 (다소 까다로움)
    8. 재귀 함수 호출
    9. 재귀적으로 디렉터리 내용 나열하기
    10. 재귀 함수에서 에러 처리하기
    11. 패닉 시작하기
    12. 스택 트레이스
    13. 지연된 호출은 크래시가 발생하기 전에 실행됩니다
    14. scanDirectory에서 “panic” 사용하기
    15. 언제 패닉을 사용하는가
    16. “recover” 함수
    17. 패닉 값은 recover에서 반환됩니다
    18. scanDirectory에서 패닉 복구하기
    19. 한 번 더 패닉
    20. Go 도구 상자
  19. 13 작업 공유하기-고루틴과 채널
    1. 웹 페이지 가져오기
    2. 멀티태스킹
    3. 고루틴을 사용한 동시성
    4. 고루틴 사용하기
    5. responseSize 함수에 고루틴 사용하기
    6. 고루틴의 실행 시점은 직접 제어할 수 없습니다
    7. go문은 반환 값과 함께 사용할 수 없습니다
    8. 채널을 통해 값 주고받기
    9. 채널을 사용한 고루틴 동기화
    10. 고루틴 동기화 관찰하기
    11. 채널을 사용해 웹 페이지 크기 계산 프로그램 수정하기
    12. 채널로 구조체 전달하기
    13. Go 도구 상자
  20. 14 코드 품질 보증-자동 테스트
    1. 자동 테스트는 사람보다 먼저 버그를 찾아냅니다
    2. 자동 테스트가 필요한 함수
    3. 버그를 발견했어요!
    4. 테스트 작성하기
    5. “go test” 명령어로 테스트 실행하기
    6. 실제 반환 값 테스트하기
    7. Errorf 메서드를 사용해 실패 메시지 상세히 작성하기
    8. 테스트 “헬퍼(helper)” 함수
    9. 테스트 통과시키기
    10. 테스트 주도 개발
    11. 또 다른 버그 수정하기
    12. 부분 테스트 집합 실행하기
    13. 테이블 주도 테스트
    14. 테스트를 사용해 패닉 발생 코드 수정하기
    15. Go 도구 상자
  21. 15 요청에 응답하기-웹 앱
    1. Go로 웹 앱 작성하기
    2. 브라우저, 요청, 서버 및 응답
    3. 간단한 웹 앱
    4. 스스로 대화하는 컴퓨터
    5. 웹 앱 동작 방식 설명
    6. 리소스 경로
    7. 서로 다른 리소스 경로에 다르게 응답하기
    8. 일급 함수
    9. 다른 함수에 함수 전달하기
    10. 타입으로서의 함수
    11. 향후 계획
    12. Go 도구 상자
  22. 16 패턴 따르기-HTML 템플릿
    1. 방명록 앱
    2. 요청 처리 함수와 에러 처리 함수
    3. 프로젝트 디렉터리 설정 및 앱 시연
    4. HTML로 서명 목록 만들기
    5. 앱에서 HTML로 응답하기
    6. “text/template” 패키지
    7. Execute 메서드에 io.Writer 인터페이스 사용하기
    8. ResponseWriter와 os.Stdout은 io.Writer를 만족합니다
    9. 액션으로 템플릿에 데이터 삽입하기
    10. “if” 액션으로 템플릿에 선택 영역 만들기
    11. “range” 액션으로 템플릿 영역 반복하기
    12. 액션으로 템플릿에 구조체 필드 삽입하기
    13. 파일에서 서명 목록 읽어 오기
    14. 서명 목록과 서명 개수를 가진 구조체
    15. 템플릿에 서명 목록 추가하기
    16. HTML 폼으로 사용자 데이터 받기
    17. HTML 폼에 응답하기
    18. 폼 전송 요청
    19. 폼 전송을 위한 경로 및 HTTP 메서드
    20. 요청에 담긴 폼 필드 값 가져오기
    21. 폼 데이터 저장하기
    22. http 리다이렉트
    23. 한 번 사용해 봅시다!
    24. 완성된 앱 코드
    25. Go 도구 상자
  23. 부록 A 파일 열기
    1. os.OpenFile 이해하기
    2. os.OpenFile에 플래그 상수 전달하기
    3. 이진법
    4. 비트 단위 연산자
    5. 비트 단위 AND 연산자
    6. 비트 단위 OR 연산자
    7. “os” 패키지 상수에 비트 단위 OR 사용하기
    8. 비트 단위 OR 연산자를 사용해 os.OpenFile 옵션 수정하기
    9. 유닉스 스타일의 파일 권한
    10. os.FileMode 타입으로 권한 나타내기
    11. 팔진법
    12. 팔진수를 FileMode 값으로 변환하기
    13. os.OpenFile 호출 코드 설명
  24. 부록 B 번외
    1. #1 “if”문에서의 초기화문
    2. #2 switch문
    3. #3 추가 기본 타입
    4. #4 룬 더 알아보기
    5. #5 버퍼 있는 채널
    6. #6 읽을거리
  25. Index (1/4)
  26. Index (2/4)
  27. Index (3/4)
  28. Index (4/4)

Product information

  • Title: Head First Go: 명확한 예제로 효율적인 학습법을 제시하는 Go 입문서
  • Author(s): 권민재, 제이 맥가브렌
  • Release date: March 2020
  • Publisher(s): Hanbit Media, Inc.
  • ISBN: 9791162247921