여정
Go (Golang) 배우기
무료 인터랙티브 온라인 Go 강의입니다. 매 레슨마다 직접 Go 코드를 작성합니다 — 문법, struct, slice, interface, goroutines, channels까지. 동시성이 헷갈릴 땐 AI 힌트가 도와주고, 완주하면 무료 수료증도 드립니다.
20,998+ 명의 codders가 등록함
- 초보자 환영
AI 코딩 도우미
실습 중심의 대화형 강의
모든 레슨에 음성 나레이션 제공
지식을 확인하는 퀴즈
무료 수료증
커리큘럼
섹션 1
기초
섹션 시작하기시작펼치기접기필수 개념과 기본 기술로 튼튼한 기초를 다지세요Go 입문
4 개 강의423- 01Go란 무엇인가요?챌린지
- 02Hello World챌린지퀴즈오디오
- 03Println챌린지퀴즈오디오
- 04Go 주석챌린지퀴즈오디오
변수와 기본 자료형
10 개 강의1069- 01변수란 무엇인가챌린지퀴즈오디오
- 02`:=`를 이용한 타입 추론챌린지퀴즈오디오
- 03정수 (int)챌린지퀴즈오디오
- 04부동 소수점 수챌린지퀴즈오디오
- 05불리언 (Booleans)챌린지퀴즈오디오
- 06문자열 (Strings)챌린지퀴즈오디오
- 07제로 값 (Zero Values)챌린지퀴즈오디오
- 08상수챌린지퀴즈오디오
- 09명명 규칙챌린지퀴즈오디오
- 10요약 - 변수와 타입챌린지
기초 연산자
7 개 강의744- 01산술 연산자챌린지퀴즈오디오
- 02나눗셈 연산자챌린지퀴즈오디오
- 03나머지 연산자챌린지퀴즈오디오
- 04대입 연산자챌린지퀴즈오디오
- 05복합 대입 연산자챌린지퀴즈오디오
- 06증감 연산자챌린지퀴즈오디오
- 07요약 - 계산챌린지
비교 및 논리 연산자
7 개 강의742- 01비교 연산자 - 파트 1챌린지퀴즈오디오
- 02비교 연산자 - 파트 2챌린지퀴즈오디오
- 03논리 AND 연산자챌린지퀴즈오디오
- 04논리 OR 연산자챌린지퀴즈오디오
- 05논리 NOT 연산자챌린지퀴즈오디오
- 06연산자 우선순위 기초챌린지퀴즈오디오
- 07요약 - 비교하기챌린지
기초 입출력
5 개 강의532- 01포맷된 출력챌린지퀴즈오디오
- 02포맷 지시자챌린지퀴즈오디오
- 03타입 출력하기챌린지퀴즈오디오
- 04기본적인 사용자 입력 받기챌린지퀴즈오디오
- 05요약 - 입출력챌린지
제어 흐름: 조건문
10 개 강의1069- 01`if` 문챌린지퀴즈오디오
- 02`else` 키워드챌린지퀴즈오디오
- 03`else if` 키워드챌린지퀴즈오디오
- 04`if` 문에서의 변수 섀도잉챌린지퀴즈오디오
- 05변수 초기화챌린지퀴즈오디오
- 06`switch` 문챌린지퀴즈오디오
- 07표현식이 있는 Switch챌린지퀴즈오디오
- 08표현식이 없는 Switch챌린지퀴즈오디오
- 09`fallthrough` 키워드챌린지퀴즈오디오
- 10요약 - 의사 결정하기챌린지
제어 흐름: 반복문
7 개 강의743- 01`for` 반복문 설명챌린지퀴즈오디오
- 02`for` 반복문 - 기초챌린지퀴즈오디오
- 03`for` 반복문 - 조건만 사용챌린지퀴즈오디오
- 04`break` 키워드챌린지퀴즈오디오
- 05`continue` 키워드챌린지퀴즈오디오
- 06중첩 반복문챌린지퀴즈오디오
- 07요약 - 동작 반복하기챌린지
함수
9 개 강의962- 01함수 이해하기챌린지퀴즈오디오
- 02함수 선언하기챌린지퀴즈오디오
- 03함수 호출하기챌린지퀴즈오디오
- 04함수 매개변수챌린지퀴즈오디오
- 05단일 값 반환하기챌린지퀴즈오디오
- 06여러 값 반환하기챌린지퀴즈오디오
- 07이름이 지정된 반환 값챌린지퀴즈오디오
- 08함수 스코프 기초챌린지퀴즈오디오
- 09요약 - 재사용 가능한 코드 만들기챌린지
포인터
7 개 강의644- 01포인터란 무엇인가요?퀴즈오디오
- 02포인터 변수 선언하기챌린지퀴즈오디오
- 03주소 연산자챌린지퀴즈오디오
- 04포인터 역참조챌린지퀴즈오디오
- 05함수에서 포인터 사용하기챌린지퀴즈오디오
- 06Nil 포인터챌린지퀴즈오디오
- 07요약 - 포인터의 이해챌린지
복합 타입: 배열
7 개 강의650- 01배열 소개퀴즈오디오
- 02배열 선언하기챌린지퀴즈오디오
- 03배열 초기화하기챌린지퀴즈오디오
- 04배열 요소에 접근하기챌린지퀴즈오디오
- 05`len`을 이용한 배열 길이 확인챌린지퀴즈오디오
- 06배열 순회하기챌린지퀴즈오디오
- 07다차원 배열챌린지퀴즈오디오
복합 타입: 슬라이스
10 개 강의965- 01슬라이스 소개퀴즈오디오
- 02슬라이스 리터럴 선언하기챌린지퀴즈오디오
- 03`make`로 슬라이스 생성하기챌린지퀴즈오디오
- 04슬라이스 길이 vs 용량챌린지퀴즈오디오
- 05슬라이스 요소에 접근하기챌린지퀴즈오디오
- 06요소 추가하기챌린지퀴즈오디오
- 07기존 슬라이스/배열 슬라이싱하기챌린지퀴즈오디오
- 08슬라이스 순회하기챌린지퀴즈오디오
- 09슬라이스 복사하기챌린지퀴즈오디오
- 10요약 - 동적 리스트챌린지
복합 타입: 맵
10 개 강의965- 01맵 소개퀴즈오디오
- 02맵 리터럴 선언하기챌린지퀴즈오디오
- 03`make`로 맵 생성하기챌린지퀴즈오디오
- 04키-값 추가 및 업데이트챌린지퀴즈오디오
- 05맵 값에 접근하기챌린지퀴즈오디오
- 06키 존재 여부 확인하기챌린지퀴즈오디오
- 07맵 항목 삭제하기챌린지퀴즈오디오
- 08맵 길이챌린지퀴즈오디오
- 09맵 순회하기챌린지퀴즈오디오
- 10요약 - 키-값 저장소챌린지
복합 타입: 구조체
8 개 강의854- 01사용자 정의 타입 정의하기챌린지퀴즈오디오
- 02구조체 인스턴스 생성하기챌린지퀴즈오디오
- 03구조체 필드 접근하기챌린지퀴즈오디오
- 04구조체 포인터챌린지퀴즈오디오
- 05구조체 초기화하기챌린지퀴즈오디오
- 06임베디드 구조체챌린지퀴즈오디오
- 07익명 구조체챌린지퀴즈오디오
- 08요약 - 사용자 정의 데이터 구조챌린지
기초 에러 처리
8 개 강의858- 01에러의 개념챌린지퀴즈오디오
- 02`error` 인터페이스챌린지퀴즈오디오
- 03에러를 반환하는 함수챌린지퀴즈오디오
- 04에러 확인하기챌린지퀴즈오디오
- 05단순 에러 생성하기챌린지퀴즈오디오
- 06포맷된 에러 생성하기챌린지퀴즈오디오
- 07기초 에러 처리챌린지퀴즈오디오
- 08요약 - 문제 처리하기챌린지
섹션 2
로직 & 흐름
섹션 시작하기시작펼치기접기데이터 구조와 흐름 제어에 중점을 둔 고급 Go 프로그래밍을 마스터하세요. 복잡한 배열, 컬렉션, 오류 처리, 그리고 시간 관리를 다루는 방법을 배워보세요.고급 제어 흐름
5 개 강의528- 01`fallthrough`를 사용한 Switch 문챌린지퀴즈
- 02중첩 루프 탈출하기챌린지퀴즈
- 03특정 루프 계속하기챌린지퀴즈
- 04`goto` 문챌린지퀴즈
- 05요약 - 고급 루프 제어챌린지
구조체와 메서드
6 개 강의439- 01구조체에 메서드 정의하기챌린지퀴즈
- 02값 리시버챌린지퀴즈
- 03포인터 리시버챌린지퀴즈
- 04리시버 선택하기퀴즈
- 05메서드 vs 함수퀴즈
- 06요약 - 구조체 동작챌린지
인터페이스 (기초)
8 개 강의757- 01인터페이스란 무엇인가요?퀴즈
- 02인터페이스 정의하기챌린지퀴즈
- 03인터페이스 구현하기챌린지퀴즈
- 04인터페이스 타입 사용하기챌린지퀴즈
- 05빈 인터페이스챌린지퀴즈
- 06타입 단언챌린지퀴즈
- 07타입 스위치챌린지퀴즈
- 08요약 - 도형과 동작챌린지
프로젝트: 간단한 할 일 목록
프로젝트6 개 강의1- 01프로젝트 설정챌린지
- 02할 일 추가하기프로젝트
- 03모든 할 일 보기프로젝트
- 04할 일 완료하기프로젝트
- 05할 일 삭제하기프로젝트
- 06하나로 합치기프로젝트
Map 심화
5 개 강의432- 01구조체 Map챌린지퀴즈
- 02Map 값으로 포인터 사용하기챌린지퀴즈
- 03Nil Map 체크하기챌린지퀴즈
- 04Map 비교하기퀴즈
- 05요약 - 단어 빈도수 계산기챌린지
관용적인 Go: Set
7 개 강의648- 01Go의 Set 관용구퀴즈
- 02Set 생성하기챌린지퀴즈
- 03Set에 추가하기챌린지퀴즈
- 04요소 포함 여부 확인하기챌린지퀴즈
- 05Set에서 제거하기챌린지퀴즈
- 06Set 순회하기챌린지퀴즈
- 07요약 - 고유한 사용자 이름챌린지
에러 처리 심화
7 개 강의650- 01사용자 정의 에러 타입챌린지퀴즈
- 02%w를 사용한 에러 래핑챌린지퀴즈
- 03errors.Is를 사용한 언래핑챌린지퀴즈
- 04errors.As를 사용한 언래핑챌린지퀴즈
- 05panic 이해하기퀴즈
- 06recover 사용하기챌린지퀴즈
- 07요약 - 안전한 나눗셈챌린지
프로젝트: 간단한 재고 관리
프로젝트6 개 강의1- 01프로젝트 개요챌린지
- 02재고 확인하기프로젝트
- 03새 항목 추가하기프로젝트
- 04재고 수량 업데이트하기프로젝트
- 05보고서 생성하기프로젝트
- 06하나로 합치기프로젝트
패키지와 스코프
7 개 강의550- 01패키지란 무엇인가요?퀴즈
- 02Exported와 Unexported챌린지퀴즈
- 03간단한 패키지 만들기챌린지퀴즈
- 04패키지 별칭 지정챌린지퀴즈
- 05빈 식별자 `_`퀴즈
- 06`init` 함수챌린지퀴즈
- 07요약 - 유틸리티 만들기챌린지
시간 다루기
8 개 강의857- 01현재 시간 가져오기챌린지퀴즈
- 02특정 시간 생성하기챌린지퀴즈
- 03시간 포맷팅챌린지퀴즈
- 04시간 문자열 파싱챌린지퀴즈
- 05시간 간격챌린지퀴즈
- 06시간 연산챌린지퀴즈
- 07Sleep과 Ticker챌린지퀴즈
- 08요약 - 간단한 타이머챌린지
최종 도전 과제
3 개 강의3- 01기초 연락처 목록챌린지
- 02간단한 숫자 검증기챌린지
- 03중복 없는 항목 수집기챌린지
섹션 3
객체 지향 프로그래밍
섹션 시작하기시작펼치기접기클래스, 객체, 재사용 가능한 구조로 코드를 구성하는 방법을 알아보세요Go OOP 기초
11 개 강의1189- 01외부 파일챌린지퀴즈
- 02Go 워크스페이스와 모듈챌린지퀴즈
- 03패키지와 임포트챌린지퀴즈
- 04공개 및 비공개 이름챌린지퀴즈
- 05Go OOP 입문챌린지퀴즈
- 06클래스로서의 구조체챌린지퀴즈
- 07구조체 메서드 정의하기챌린지퀴즈
- 08포인터 리시버 vs 값 리시버챌린지퀴즈
- 09구조체 초기화챌린지퀴즈
- 10생성자 함수챌린지퀴즈
- 11복습 - 간단한 계산기챌린지
타입과 구조체 심층 분석
7 개 강의752- 01기본 및 복합 타입챌린지퀴즈
- 02사용자 정의 타입 정의챌린지퀴즈
- 03구조체 태그챌린지퀴즈
- 04익명 구조체챌린지퀴즈
- 05중첩 구조체챌린지퀴즈
- 06제로 값과 기본값챌린지퀴즈
- 07요약 - 연락처챌린지
포인터와 메모리
6 개 강의644- 01Go의 포인터 기초챌린지퀴즈
- 02구조체 포인터챌린지퀴즈
- 03값에 의한 전달 vs 참조에 의한 전달챌린지퀴즈
- 04new() 함수챌린지퀴즈
- 05Go의 가비지 컬렉션챌린지퀴즈
- 06요약 - 연결 리스트 빌더챌린지
인터페이스
9 개 강의969- 01인터페이스 소개챌린지퀴즈
- 02암시적 구현챌린지퀴즈
- 03계약으로서의 인터페이스챌린지퀴즈
- 04빈 인터페이스 (any)챌린지퀴즈
- 05타입 단언챌린지퀴즈
- 06타입 스위치챌린지퀴즈
- 07인터페이스 구성챌린지퀴즈
- 08Stringer 및 Error 인터페이스챌린지퀴즈
- 09요약 - 도형 계산기챌린지
상속보다 구성을
7 개 강의749- 01Go에 상속이 없는 이유챌린지퀴즈
- 02구조체 임베딩 기초챌린지퀴즈
- 03메서드 프로모션챌린지퀴즈
- 04여러 구조체 임베딩하기챌린지퀴즈
- 05임베딩 vs 집약챌린지퀴즈
- 06임베딩된 메서드 섀도잉챌린지퀴즈
- 07요약 - 직원 계층 구조챌린지
Go에서의 다형성
6 개 강의643- 01인터페이스를 통한 다형성챌린지퀴즈
- 02Go에서의 덕 타이핑챌린지퀴즈
- 03인터페이스 충족 규칙챌린지퀴즈
- 04다형성 컬렉션챌린지퀴즈
- 05의존성 주입챌린지퀴즈
- 06요약 - 결제 프로세서챌린지
캡슐화
5 개 강의536- 01공개 필드와 비공개 필드챌린지퀴즈
- 02패키지 수준의 캡슐화챌린지퀴즈
- 03Getter와 Setter 메서드챌린지퀴즈
- 04Go에서의 정보 은닉챌린지퀴즈
- 05요약 - 학생 기록챌린지
에러 처리와 OOP
7 개 강의754- 01error 인터페이스챌린지퀴즈
- 02사용자 정의 에러 타입챌린지퀴즈
- 03에러 래핑 (fmt.Errorf)챌린지퀴즈
- 04센티넬 에러챌린지퀴즈
- 05errors.Is()와 errors.As()챌린지퀴즈
- 06Panic, Defer, Recover챌린지퀴즈
- 07요약 - 파일 파서챌린지
동시성 & OOP
8 개 강의863- 01Goroutines 기초챌린지퀴즈
- 02Channels & 통신챌린지퀴즈
- 03Buffered vs Unbuffered 채널챌린지퀴즈
- 04Select 문챌린지퀴즈
- 05sync.Mutex & sync.RWMutex챌린지퀴즈
- 06sync.WaitGroup챌린지퀴즈
- 07Thread-Safe 구조체 설계챌린지퀴즈
- 08요약 - Worker Pool챌린지
제네릭 (Go 1.18+)
6 개 강의645- 01제네릭 소개챌린지퀴즈
- 02타입 파라미터챌린지퀴즈
- 03타입 제약챌린지퀴즈
- 04제네릭 구조체챌린지퀴즈
- 05제네릭 메서드 우회 방법챌린지퀴즈
- 06요약 - 제네릭 컬렉션챌린지
표준 라이브러리 & OOP
6 개 강의644- 01io.Reader & io.Writer챌린지퀴즈
- 02sort.Interface챌린지퀴즈
- 03fmt.Stringer 인터페이스챌린지퀴즈
- 04encoding/json과 구조체챌린지퀴즈
- 05http.Handler 인터페이스챌린지퀴즈
- 06요약 - REST API 모델챌린지
고급 OOP 개념
6 개 강의655- 01함수형 옵션 패턴챌린지퀴즈
- 02Go에서의 빌더 패턴챌린지퀴즈
- 03메서드 체이닝챌린지퀴즈
- 04타입 별칭 vs 타입 정의챌린지퀴즈
- 05리플렉션 기초챌린지퀴즈
- 06코드 생성 개요챌린지퀴즈
디자인 패턴 파트 1
6 개 강의651- 01디자인 패턴 소개챌린지퀴즈
- 02싱글톤 패턴챌린지퀴즈
- 03팩토리 패턴챌린지퀴즈
- 04추상 팩토리 패턴챌린지퀴즈
- 05옵저버 패턴챌린지퀴즈
- 06전략 패턴챌린지퀴즈
디자인 패턴 파트 2
7 개 강의764- 01커맨드 패턴챌린지퀴즈
- 02어댑터 패턴챌린지퀴즈
- 03데코레이터 패턴챌린지퀴즈
- 04템플릿 메서드 패턴챌린지퀴즈
- 05상태 패턴챌린지퀴즈
- 06컴포지트 패턴챌린지퀴즈
- 07데코레이터로서의 Middleware챌린지퀴즈
프로젝트: 도서 관리
프로젝트7 개 강의1- 01프로젝트 개요 및 구조챌린지
- 02Book 및 User 구조체프로젝트
- 03대출 시스템프로젝트
- 04Interface를 활용한 검색프로젝트
- 05JSON 영속성 계층프로젝트
- 06관리자 CLI Interface프로젝트
- 07테스트 및 통합프로젝트
최종 도전 과제
3 개 강의3- 01이러닝 플랫폼챌린지
- 02은행 시스템챌린지
- 03게임 캐릭터 시스템챌린지
Coddy에서 Go (Golang)을 배우는 이유
- 브라우저에서 진짜 Go 코드를 작성하고 실행하세요. Go toolchain 설치도, GOPATH 설정도 필요 없습니다. 각 레슨마다 작성한 Go 프로그램이 서버에서 컴파일되어 결과가 즉시 표시됩니다.
- Idiomatic Go: 패키지, structs, slices와 maps, interfaces, 에러 처리, goroutines, channels. 백엔드와 CLI를 만들 때 실제로 쓰는 Go 패턴들입니다.
- AI 힌트가 Go 코드 디버깅과 goroutine·channel 관련 버그를 푸는 걸 도와줍니다. 정답을 바로 알려주는 대신 힌트만 주기 때문에, 헷갈리던 동시성 모델이 자연스럽게 이해되기 시작합니다.
- 수료하면 무료 Golang 수료증 제공. backend, 클라우드 인프라, DevOps 분야에서 Go 역량이 점점 더 요구되는 만큼 신뢰할 만한 증빙이 됩니다.
Go (Golang) 학습에 대한 자주 묻는 질문
Go (Golang)은 배우기 쉬운가요?
Go는 의도적으로 단순하게 설계된 현대 언어 중 하나입니다. 작은 명세, 상속 없음, 기본 제너릭의 복잡함도 없고, 표준 라이브러리는 탄탄합니다. 대부분의 입문자는 첫 시간 안에 첫 Go 프로그램을 동작시키고, 몇 주 안에 goroutines를 작성하기 시작합니다.
Go(Golang)는 어디에 쓰이나요?
백엔드 서비스, 클라우드 인프라, CLI, DevOps 도구. Docker, Kubernetes, Terraform을 비롯해 클라우드 네이티브 인프라의 상당 부분이 Go로 작성되어 있습니다. 빠른 컴파일, 쉬운 동시성, 단일 정적 바이너리 생성을 중심으로 설계된 언어라 서버와 커맨드라인 도구에 자연스럽게 들어맞습니다.
Go를 배우는 데 얼마나 걸리나요?
Go의 기본 — 문법, 함수, 구조체, 슬라이스, 맵 — 은 매일 연습한다면 1~2주면 익힐 수 있습니다. 인터페이스, goroutines, 채널을 자연스럽게 다루는 데에는 보통 2~6주가 더 걸리고요. 그 이후 Go 서비스에서 실무 수준에 도달하는 건 결국 실제 코드베이스에서 일해 보는 경험이 좌우합니다.
Go와 Python 중 무엇을 배워야 하나요?
목적에 따라 선택하세요. Python은 데이터 작업, 스크립팅, AI 분야에서 더 빨리 생산성을 낼 수 있습니다. Go는 백엔드 서비스, 인프라 도구, 그리고 동시성이 내장된 빠른 정적 타입 바이너리가 필요한 모든 작업에서 빛을 발합니다. 두 언어는 서로를 잘 보완해 — 많은 백엔드 팀이 둘 다 사용합니다.
Golang을 온라인에서 무료로 배울 수 있나요?
네. 인터랙티브 Go 강의는 무료입니다 — 전체 레슨, 코딩 연습, 퀴즈, 그리고 수료증까지 모두요. Go 컴파일러가 서버에서 실행되기 때문에 Go를 로컬에 설치하거나 GOPATH를 설정할 필요 없이 바로 코딩을 시작할 수 있습니다.
Go 코스를 마치면 수료증을 받을 수 있나요?
네. Go 코스를 끝내면 무료 수료증을 받을 수 있고, 이력서에 추가하거나 LinkedIn에 공유할 수 있습니다. 직접 만든 Go 프로젝트나 GitHub 저장소와 함께 검증 가능한 실력 증명으로 활용할 수 있죠.