가이드 학습 도구를 사용해서 학습을 시작해보자.| 특징 | Java / Spring | Go |
|---|---|---|
| 실행 방식 | JVM 위에서 바이트코드 실헹 | 정적 컴파일된 단일 바이너리 실행 |
| 객체지향 | 클래스, 상속, 인터페이스 | 구조체, 임베딩, 덕 타이핑 인터페이스 |
| 동시성 | OS 스레드 / 가상 스레드 (Loom) | 고루틴 & 채널 |
| 에러 처리 | try-catch-finally (예외 기반) | 명시적 에러 반환 (value, error) |
| 의존성 주입 | Spring DI (런타임 리플렉션 중심) | 명시적 생성자 주입 (컴파일 타임 중심) |
| 특징 | Java | Go |
|---|---|---|
| 명시적 선언 | int age = 30; | var age int = 30 |
| 타입 추론 | var name = "Gemini"; | `name := "Gemini" |
| 제로 값(Zero Value) | 초기화 필수 (지역 변수) | 선언 시 자동으로 제로 값 할당 (0, "", false 등) |
while 이나 do-while이 없고 오직 for만 존재
for i := 0; i < 10; i++ { ... }for condition { ... }for { ... }if문에 초기화 문장을 넣을 수 있음if val := getVal(); val > 10 { ... }val은 if 블록 안에서만 유효하다:-)과 하나의 for문이 주는 장점은 뭘까?while을 쓰고, 어떤 사람은 for를 써서 같은 로직을 다르게 구현한 것을 본적이 있을 것임for로 시작while, do-while 같은 키워드가 없으므로 언어 자체가 단순함for는 조건식만 남기면 `while이 되고, 다 비우면 무한 루프가 됨Iterator를 쓰거나, Stream을 쓰거나, 일반 for를 쓰는 등 선택지가 많음
for와 range로 짜라는 가이드가 명확