Go 2주 완성 시리즈
C++ 개발자를 위한 Go 언어 집중 학습
기본 문법 → 자료구조 → 객체지향 → 인터페이스 → 에러 처리 → 고루틴·채널 → 테스팅 → REST API
14일 만에 Go 언어를 마스터하세요.
총 10편
-
C++ 개발자를 위한 Go 언어 2주 학습 커리큘럼: Day별 일정과 C++ 개념 대응
C++ 개발자가 Go를 배울 때 클래스 없는 구조체와 인터페이스, 에러 값 반환, 고루틴과 채널로 사고방식을 옮기는 과정을 Day별 2주 일정으로 정리했습니다. M:N 스케줄러와 채널 내부 구조, C++ 코드를 Go로 옮길 때의 주의점도 다룹니다.
-
[Go 2주 완성 #01] Day 1~2: Go 언어의 철학과 기본 문법 - C++ 개발자의 첫인상
C++ 개발자가 Go를 처음 배울 때 단순성, 명시성, 동시성이라는 설계 철학과 포인터·상속·제네릭 차이를 먼저 짚습니다. 설치와 Hello World 비교, go mod 패키지 구조, := 짧은 선언과 제로 값, for 하나로 모든 반복을 표현하는 문법을 익힙니다.
-
[Go 2주 완성 #02] Day 3~4: 메모리와 자료구조 - 포인터 연산은 없지만 포인터는 있다
Go에는 포인터는 있지만 포인터 연산은 없다는 점에서 출발해 C++과 포인터·함수 인자 전달을 비교합니다. 값 타입인 배열과 동적 배열인 슬라이스의 내부 구조, 두 슬라이스가 같은 배열을 공유해서 생기는 버그, map 사용법을 예제로 봅니다.
-
[Go 2주 완성 #03] Day 5~6: 클래스 없는 객체지향 - 상속을 버리고 합성을 취하다
클래스와 상속이 없는 Go에서 구조체, 메서드, 리시버로 객체지향을 구현하는 방법을 C++ 코드와 비교합니다. 값 리시버와 포인터 리시버를 고르는 기준, 구조체 임베딩으로 상속 없이 재사용하기, Functional Options 생성자 패턴을 다룹니다.
-
[Go 2주 완성 #04] Day 7: 다형성의 재해석, 인터페이스 - 가상 함수 없이 다형성 구현하기
implements 선언 없이 메서드만 구현하면 인터페이스를 만족하는 Go의 암시적 인터페이스를 C++ 가상 함수와 비교합니다. io.Reader·io.Writer·fmt.Stringer·error 같은 표준 인터페이스, any와 타입 단언, 타입 스위치, 작은 인터페이스 설계 원칙을 다룹니다.
-
[Go 2주 완성 #05] Day 8~9: 예외 처리의 새로운 접근 - try-catch는 잊어라
try-catch가 없는 Go에서 에러를 값으로 반환하고 if err != nil로 즉시 처리하는 방식을 C++ 예외와 비교합니다. RAII 대신 쓰는 defer의 실행 순서와 평가 시점, fmt.Errorf의 %w 래핑과 errors.Is·As, panic과 recover의 쓰임새를 다룹니다.
-
[Go 2주 완성 #06] Day 10~11: 고루틴과 채널 - 동시성 프로그래밍의 혁명
std::thread보다 훨씬 작은 스택으로 시작하는 고루틴과 WaitGroup, 고루틴 사이의 통신 수단인 채널, 버퍼 채널, select의 타임아웃과 논블로킹 처리를 C++ 코드와 비교합니다. 워커 풀, 파이프라인, 팬아웃·팬인 동시성 패턴도 다룹니다.
-
[Go 2주 완성 #07] Day 12~13: 의존성 관리와 테스팅 - CMake보다 쉬운 세상
CMake 없이 go mod init과 go get으로 의존성을 관리하고 go.mod 구조를 읽는 법, Gin을 붙인 HTTP 서버 예제를 보여줍니다. go test로 작성하는 유닛 테스트, 테이블 주도 테스트와 t.Run 서브테스트, 벤치마크, 커버리지 측정, 모킹을 다룹니다.
-
[Go 2주 완성 #08] Day 14: 실전 미니 프로젝트 - REST API 서버 구축
앞선 편에서 익힌 구조체, 인터페이스, 에러 처리, 고루틴, 테스트를 묶어 net/http만으로 할 일 관리 REST API 서버를 만듭니다. 프로젝트 구조, 저장소 인터페이스, 핸들러와 미들웨어, 백그라운드 작업, 핸들러 테스트, Docker 배포까지 따라갑니다.
-
[Go 심화 #09] context.Context로 타임아웃·취소·우아한 종료 다루기 — C++와의 비교
HTTP 요청이 끊겼는데 DB 쿼리가 계속 도는 문제를 context.Context로 막는 방법을 설명합니다. 루트와 파생 컨텍스트, 파이프라인 취소 전파, 오래 도는 고루틴 멈추기, 신호를 받아 Shutdown하는 우아한 종료를 C++ stop_token과 비교하며 다룹니다.