본문으로 건너뛰기
Previous
Next
Go 2주 완성 시리즈 전체 목차 | C++ 개발자를 위한 Golang 마스터 커리큘럼

Go 2주 완성 시리즈 전체 목차 | C++ 개발자를 위한 Golang 마스터 커리큘럼

Go 2주 완성 시리즈 전체 목차 | C++ 개발자를 위한 Golang 마스터 커리큘럼

이 글의 핵심

Go의 설계 배경(단순함·고루틴·정적 바이너리)과 함께, #01~#09까지 문법→동시성→실전→운영 순 목차·14일 로드맵·연관 글을 한 페이지에 모았습니다.

Go 2주 완성 시리즈 목차

C++ 개발자를 위한 Go 언어 집중 학습 시리즈입니다. C++과의 비교로 문맥을 맞추었고, 각 글에는 코드 대조, 실습 과제, 체크리스트가 들어 있습니다. 시작 경로: 커리큘럼 전체 보기에서 로드맵을 확인하시거나, #01 기본 문법부터 읽으시면 됩니다. ⏱️ 학습 시간: 하루 2–3시간 투자로 14일 완성 (총 약 28–42시간) 👥 대상 독자: C/C++ 경험이 있고, 클라우드 네이티브 개발이나 마이크로서비스를 위해 Go를 빠르게 습득하고 싶은 개발자

Go가 지향하는 것과 이 목차의 축

Go(2009년 공개, Google)는 멀티코어·네트워크 서비스를 전제로 빠른 빌드·읽기 쉬운 코드·정적 링크 바이너리를 강조해 왔습니다. 예외 대신 error, 클래스 상속 대신 구조체·임베딩, “스레드만으로는 비용이 크다”는 문제에 고루틴(M:N 스케줄링에 가까운 경량 작업 단위)채널(통신으로 공유 메모리)을 제시한 점이 특징입니다. C++ 개발자에게는 GC·런타임이나 제네릭 도입 전후의 관용처럼 처음엔 낯은 부분도 있지만, 단일 바이너리 배포·표준 라이브러리의 실용성은 운영 관점에서 자주 체감됩니다.

이 시리즈는 1주 차(#01~#04)에서 문법·메모리 모델·합성·인터페이스로 “컴파일되고 읽히는 코드”를 만들고, 2주 차(#05~#08)에서 에러·동시성·모듈·REST로 “다른 서비스와 말하는 코드”로 넓힌 뒤, #09에서 context·취소·우아한 종료로 “끊을 수 있는 서버”까지 이어지도록 배치했습니다. 2주는 핵심 골격을 잡는 기간에 가깝고, 숙련은 이후 실서비스·코드 리뷰·프로파일링에서 쌓인다고 보면 기대치를 맞추기 좋습니다.


🔖 빠른 점프

1주 차: #01 기본 문법#02 자료구조#03 객체지향#04 인터페이스 2주 차: #05 에러 처리#06 고루틴·채널#07 테스팅#08 REST API#09 context·우아한 종료

추천 학습 경로

%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#ffe6e6','primaryTextColor':'#000','primaryBorderColor':'#ff9999','lineColor':'#666','secondaryColor':'#e6f3ff','tertiaryColor':'#fff4e6','noteBkgColor':'#e6ffe6','noteTextColor':'#000','noteBorderColor':'#99cc99'}}}%%
flowchart TD
    A[커리큘럼br/확인] --> B["1주 차:br/기본기"]
    B --> C["2주 차:br/동시성"]
    C --> D[실전br/프로젝트]
    
    B --> E["#01 기본br/문법"]
    E --> F[#02br/자료구조]
    F --> G[#03br/객체지향]
    G --> H[#04br/인터페이스]
    
    C --> I["#05 에러br/처리"]
    I --> J["#06 고루틴·br/채널"]
    J --> K[#07br/테스팅]
    
    D --> L["#08 RESTbr/API"]
    
    style A fill:#ffe6e6,stroke:#ff9999,stroke-width:2px,color:#000
    style B fill:#e6f3ff,stroke:#99ccff,stroke-width:2px,color:#000
    style C fill:#fff4e6,stroke:#ffcc99,stroke-width:2px,color:#000
    style D fill:#e6ffe6,stroke:#99cc99,stroke-width:2px,color:#000
    style E fill:#e6f3ff,stroke:#99ccff,stroke-width:2px,color:#000
    style F fill:#e6f3ff,stroke:#99ccff,stroke-width:2px,color:#000
    style G fill:#e6f3ff,stroke:#99ccff,stroke-width:2px,color:#000
    style H fill:#e6f3ff,stroke:#99ccff,stroke-width:2px,color:#000
    style I fill:#fff4e6,stroke:#ffcc99,stroke-width:2px,color:#000
    style J fill:#fff4e6,stroke:#ffcc99,stroke-width:2px,color:#000
    style K fill:#fff4e6,stroke:#ffcc99,stroke-width:2px,color:#000
    style L fill:#e6ffe6,stroke:#99cc99,stroke-width:2px,color:#000

📚 시리즈 전체 글 목록

시작: 커리큘럼 개요

  • C++ 개발자를 위한 2주 완성 Go 언어 마스터 커리큘럼 — 전체 학습 로드맵, 14일 계획, 학습 팁

📘 1주 차: 패러다임의 전환과 기본기 다지기

C++의 복잡함을 덜어내고 Go의 심플함에 적응하는 주간입니다.

Day 1~2: 기본 문법

  • #01 Go 언어의 철학과 기본 문법
    • Go 설치 및 툴체인 (go build, go run, go fmt)
    • 변수 선언: auto vs :=
    • 반복문: while 없는 세계
    • 가비지 컬렉터로 메모리 관리 자동화

Day 3~4: 자료구조

  • #02 메모리와 자료구조
    • 포인터: 연산은 없지만 역참조는 있다
    • Slice: C++ std::vector와의 차이
    • Map: 해시 테이블 활용
    • Length vs Capacity 이해

Day 5~6: 객체지향

  • #03 클래스 없는 객체지향
    • 구조체와 메서드
    • 포인터 리시버 vs 값 리시버
    • 상속 대신 합성(Embedding)
    • 생성자 패턴 (NewXxx)

Day 7: 인터페이스

  • #04 다형성의 재해석, 인터페이스
    • 가상 함수 없는 다형성
    • Duck Typing (암시적 인터페이스)
    • io.Reader, io.Writer 패턴
    • 빈 인터페이스와 타입 단언

📗 2주 차: Go 언어의 꽃, 동시성과 실전 에코시스템

OS 스레드와 Mutex에서 벗어나 우아한 동시성 제어를 배웁니다.

Day 8~9: 에러 처리

  • #05 예외 처리의 새로운 접근
    • try-catch 대신 if err != nil
    • 다중 반환값으로 에러 전달
    • defer로 자원 해제 (RAII 대체)
    • panicrecover의 올바른 사용

Day 10~11: 동시성

  • #06 고루틴과 채널
    • 고루틴: 수만 개를 가볍게
    • 채널: 안전한 통신
    • select로 다중 채널 제어
    • 워커 풀, 파이프라인 패턴

Day 12~13: 테스팅

  • #07 의존성 관리와 테스팅
    • Go Modules (go.mod, go.sum)
    • go get으로 라이브러리 추가
    • go test로 유닛 테스트
    • 테이블 주도 테스트, 벤치마크

Day 14: 실전 프로젝트

  • #08 실전 미니 프로젝트 - REST API 서버
    • net/http로 HTTP 서버 구축
    • JSON 직렬화/역직렬화
    • 고루틴으로 백그라운드 작업
    • 테스트와 Docker 배포

실무 심화 (2주 이후 권장)

  • #09 context.Context로 타임아웃·취소·우아한 종료
    • WithCancel / WithTimeout / 취소 전파
    • http.Request.Context와 DB·HTTP 클라이언트
    • http.Server.Shutdown과 SIGTERM 처리
    • C++의 취소·조건 변수 모델과 대응

🎯 빠른 접근

주제별 바로가기

기본 문법이 궁금하다면:

  • #01 기본 문법:=, for, go fmt 포인터와 자료구조를 알고 싶다면:
  • #02 메모리와 자료구조 — 포인터, Slice, Map 객체지향이 어떻게 다른지 궁금하다면:
  • #03 객체지향 — 구조체, 메서드, 합성
  • #04 인터페이스 — Duck Typing, 다형성 에러 처리 방식이 궁금하다면:
  • #05 에러 처리if err != nil, defer 동시성 프로그래밍을 배우고 싶다면:
  • #06 고루틴과 채널 — 경량 스레드, 채널 통신 테스트와 빌드가 궁금하다면:
  • #07 테스팅 — Go Modules, go test 실전 프로젝트를 만들고 싶다면:
  • #08 REST API 프로젝트 — 완전한 서버 구축 프로덕션으로 올릴 때(context·종료)가 궁금하다면:
  • #09 context·우아한 종료 — 타임아웃·취소·Shutdown

💡 학습 팁

효과적인 학습 전략

  1. 순차 학습: #01부터 #08까지 순서대로 읽으면 체계적으로 배울 수 있습니다
  2. 실습 중심: 각 글의 실습 과제를 반드시 직접 코딩해보세요
  3. C++ 비교: 각 개념을 C++과 비교하며 이해하면 학습 속도가 빨라집니다
  4. 프로젝트 적용: Day 14 프로젝트를 자신만의 아이디어로 확장해보세요

시리즈 특징

  • C++ vs Go 코드 비교: 매 개념마다 양쪽 코드를 나란히 비교
  • 실습 과제: 각 글마다 3~4개의 실전 과제 포함
  • 체크리스트: 학습 완료 확인 항목
  • 시리즈 네비게이션: 이전/다음 글 링크로 쉬운 탐색
  • FAQ: 자주 묻는 질문 3개씩

🔗 관련 시리즈

  • C++ 실전 가이드 시리즈 — C++ 기초부터 고급까지
  • C++ 고성능 네트워크 가이드 — Asio 심화
  • Git 실전 가이드 시리즈 — Git 기초부터 협업까지

📖 추천 읽기 순서

완전 초보자 (Go를 처음 접하는 경우)

  1. 커리큘럼 전체 보기 — 학습 계획 수립
  2. #01 기본 문법 — Go 설치 및 첫 프로그램
  3. #02 자료구조 — Slice, Map 활용
  4. #03 객체지향 — 구조체와 메서드
  5. #04 인터페이스 — 다형성 구현
  6. #05 에러 처리 — 명시적 에러 핸들링
  7. #06 고루틴·채널 — 동시성 프로그래밍
  8. #07 테스팅 — 의존성과 테스트
  9. #08 REST API — 실전 프로젝트
  10. #09 context·우아한 종료 — 프로덕션 패턴(권장 후속)

특정 주제만 빠르게 보고 싶은 경우

동시성만 배우고 싶다면:


🎓 2주 후 당신이 할 수 있는 것

이 시리즈를 완료하면:

  • ✅ Go 문법을 자유롭게 사용
  • ✅ 고루틴으로 동시성 프로그래밍
  • ✅ 채널로 안전한 통신
  • ✅ 인터페이스로 유연한 설계
  • ✅ REST API 서버 구축
  • ✅ 테스트 작성 및 실행
  • ✅ Go Modules로 의존성 관리

📊 시리즈 통계

  • 총 포스트 수: 10개 (커리큘럼 1개 + 코어 8편 + 실무 심화 1편; 목차 페이지 제외)
  • 총 단어 수: 약 50,000+ 단어
  • 코드 예제: 150+ 개
  • C++ vs Go 비교: 80+ 쌍
  • 실습 과제: 30+ 개
  • 예상 학습 시간: 14일 (하루 2–3시간)

🔍 검색 키워드

이 시리즈는 다음 키워드로 검색하시면 찾을 수 있습니다: Go 언어 배우기, C++ Go 전환, Golang 커리큘럼, 고루틴 채널, Go 동시성, REST API Go, C++ 개발자 Go, Go 2주 완성, Golang 입문, Go 인터페이스, Go vs C++

❓ 자주 묻는 질문

Q. 정말 2주 만에 Go를 마스터할 수 있나요?

A. 기본 프로그래밍 지식(특히 C/C++)이 있다면 2주 집중 학습으로 Go의 핵심 개념과 실무 패턴을 익힐 수 있습니다. 완전한 숙련도는 실전 프로젝트 경험이 필요합니다.

Q. 순서대로 읽어야 하나요?

A. 처음 배우는 경우 #01부터 순서대로 읽는 것을 권장합니다. 이미 Go를 조금 아는 경우 필요한 주제만 골라 읽어도 됩니다.

Q. 실습 환경은 어떻게 준비하나요?

A. go.dev에서 Go를 설치하고, 텍스트 에디터(VSCode 권장)만 있으면 됩니다. #01 기본 문법에서 상세히 안내합니다.

Q. C++ 경험이 없어도 괜찮나요?

A. 이 시리즈는 C++ 개발자를 대상으로 하지만, 다른 언어(Java, C# 등) 경험이 있어도 충분히 따라올 수 있습니다. C++ 코드 비교 부분은 참고만 하세요.

🚀 다음 단계

시리즈를 완료한 후 추천하는 학습 방향:

  1. context와 우아한 종료: #09 글에서 정리
  2. 데이터베이스 연동: PostgreSQL, MySQL, MongoDB
  3. 웹 프레임워크: Gin, Echo, Fiber
  4. gRPC: Protocol Buffers와 마이크로서비스
  5. 클라우드: Docker, Kubernetes 연동
  6. 고급 패턴: 미들웨어, 의존성 주입 추천 자료:

시작하기: #01 Go 언어의 철학과 기본 문법부터 시작하세요!

같이 보면 좋은 글 (내부 링크)

이 주제와 연결되는 다른 글입니다.

실무에서 Go를 쓸 때의 팁

  • if err != nil을 지루해하지 말고 일관되게 처리합니다. 에러를 삼키거나 로그만 찍고 넘기면, 운영에서 원인 추적이 어려워집니다.
  • 고루틴은 “무료”가 아닙니다. 루프 안에서 무한히 띄우면 메모리·스케줄러 부하가 커집니다. 워커 풀·버퍼드 채널·상한을 함께 생각합니다.
  • defer의 실행 순서와 루프 안 defer 함정을 알아 둡니다. 자원 해제는 보통 함수 단위에서 읽기 쉽게 유지됩니다.
  • context는 요청 단위로 전파합니다. DB·HTTP 클라이언트·고루틴에 같은 취소 신호를 넣어야 타임아웃이 한 번에 동작합니다.

실전 체크리스트 (Go)

동시성·종료

  • 고루틴이 끝날 때까지 기다리는 메커니즘(WaitGroup, 채널 종료)이 있는가?
  • HTTP 서버는 Shutdown 등으로 우아한 종료 경로가 있는가?

에러·관측

  • 외부 호출(DB, HTTP) 실패가 호출자까지 전달되거나 로깅되는가?
  • 프로덕션에서 panic으로 흐름을 끊지 않는가(초기화 실패 등 예외적 경우 제외)?

모듈·빌드

  • go.mod의 의존성 버전이 팀에서 합의한 범위인가?
  • CI에서 go test ./...가 통과하는가?

이 글에서 다루는 키워드 (관련 검색어)

Go 시리즈 목차, Golang 학습 순서, C++ Go 로드맵, Go 2주 완성, pkglog Go, Golang 커리큘럼 링크 등으로 검색하시면 이 글이 도움이 됩니다.

관련 글

심화 부록: 구현·운영 관점

이 부록은 앞선 본문에서 다룬 주제(「Go 2주 완성 시리즈 전체 목차 | C++ 개발자를 위한 Golang 마스터 커리큘럼」)를 구현·런타임·운영 관점에서 다시 압축합니다. 도메인별 세부 구현은 글마다 다르지만, 입력 검증 → 핵심 연산 → 부작용(I/O·네트워크·동시성) → 관측의 흐름으로 장애를 나누면 원인 추적이 빨라집니다.

내부 동작과 핵심 메커니즘

flowchart TD
  A[입력·요청·이벤트] --> B[파싱·검증·디코딩]
  B --> C[핵심 연산·상태 전이]
  C --> D[부작용: I/O·네트워크·동시성]
  D --> E[결과·관측·저장]
sequenceDiagram
  participant C as 클라이언트/호출자
  participant B as 경계(런타임·게이트웨이·프로세스)
  participant D as 의존성(API·DB·큐·파일)
  C->>B: 요청/이벤트
  B->>D: 조회·쓰기·RPC
  D-->>B: 지연·부분 실패·재시도 가능
  B-->>C: 응답 또는 오류(코드·상관 ID)
  • 불변 조건(Invariant): 버퍼 경계, 프로토콜 상태, 트랜잭션 격리, FD 상한 등 단계별로 문장으로 적어 두면 디버깅 비용이 줄어듭니다.
  • 결정성: 순수 층과 시간·네트워크·스케줄에 의존하는 층을 분리해야 테스트와 장애 분석이 쉬워집니다.
  • 경계 비용: 직렬화, 인코딩, syscall 횟수, 락 경합, 할당·GC, 캐시 미스를 의심 목록에 둡니다.
  • 백프레셔: 생산자가 소비자보다 빠를 때 버퍼·큐·스트림에서 속도를 줄이는 신호를 어디에 둘지 정의합니다.

프로덕션 운영 패턴

영역운영 관점 질문
관측성요청 단위 상관 ID, 에러율·지연 p95/p99, 의존성 타임아웃·재시도가 대시보드에 보이는가
안전성입력 검증·권한·비밀·감사 로그가 코드 경로마다 일관적인가
신뢰성재시도는 멱등 연산에만 적용되는가, 서킷 브레이커·백오프·DLQ가 있는가
성능캐시·배치 크기·커넥션 풀·인덱스·백프레셔가 데이터 규모에 맞는가
배포롤백 룬북, 카나리/블루그린, 마이그레이션·피처 플래그가 문서화되어 있는가
용량피크 트래픽·디스크·FD·스레드 풀 상한을 주기적으로 검증하는가

스테이징은 데이터 양·네트워크 RTT·동시성을 프로덕션에 가깝게 맞출수록 재현율이 올라갑니다.

확장 예시: 엔드투엔드 미니 시나리오

앞선 본문 주제(「Go 2주 완성 시리즈 전체 목차 | C++ 개발자를 위한 Golang 마스터 커리큘럼」)를 배포·운영 흐름에 맞춰 옮긴 체크리스트입니다. 도메인에 맞게 단계 이름만 바꿔 적용할 수 있습니다.

  1. 입력 계약 고정: 스키마·버전·최대 페이로드·타임아웃·에러 코드를 경계에 둔다.
  2. 핵심 경로 계측: 요청 ID, 단계별 지연, 외부 호출 결과 코드를 로그·메트릭·트레이스에서 한 흐름으로 본다.
  3. 실패 주입: 의존성 타임아웃·5xx·부분 데이터·락 대기를 스테이징에서 재현한다.
  4. 호환·롤백: 설정/마이그레이션/클라이언트 버전을 되돌릴 수 있는지 확인한다.
  5. 부하 후 검증: 피크 대비 p95/p99, 에러율, 리소스 상한, 알림 임계값을 점검한다.
handle(request):
  ctx = newCorrelationId()
  validated = validateSchema(request)
  authorize(validated, ctx)
  result = domainCore(validated)
  persistOrEmit(result, idempotentKey)
  recordMetrics(ctx, latency, outcome)
  return result

문제 해결(Troubleshooting)

증상가능 원인조치
간헐적 실패레이스, 타임아웃, 외부 의존성, DNS최소 재현 스크립트, 분산 트레이스·로그 상관관계, 재시도·서킷 설정 점검
성능 저하N+1, 동기 I/O, 락 경합, 과도한 직렬화, 캐시 미스프로파일러·APM으로 핫스팟 확인 후 한 가지씩 제거
메모리 증가캐시 무제한, 구독/리스너 누수, 대용량 버퍼, 커넥션 미반납상한·TTL·힙/FD 스냅샷 비교
빌드·배포만 실패환경 변수, 권한, 플랫폼 차이, lockfileCI 로그와 로컬 diff, 런타임·이미지 버전 핀
설정 불일치프로필·시크릿·기본값, 리전스키마 검증된 설정 단일 소스와 배포 매트릭스 표준화
데이터 불일치비멱등 재시도, 부분 쓰기, 캐시 무효화 누락멱등 키·아웃박스·트랜잭션 경계 재검토

권장 순서: (1) 최소 재현 (2) 최근 변경 범위 축소 (3) 환경·의존성 차이 (4) 관측으로 가설 검증 (5) 수정 후 회귀·부하 테스트.

배포 전에는 git addgit commitgit pushnpm run deploy 순서를 권장합니다.