📚FOS Study
홈카테고리
홈카테고리
📚FOS Study

개발 학습 기록을 정리하는 블로그입니다.

바로가기

  • 홈
  • 카테고리

소셜

  • GitHub
  • Source Repository

© 2025 FOS Study. Built with Next.js & Tailwind CSS

목록으로 돌아가기
🐹go

Go 언어 기본 학습

약 3분
GitHub에서 보기

Go 언어 기본 학습

  • 난 Java, Spring을 주로 다루던 개발자
    • 비교하면서 학습하면 빠르게 학습할 수 있지 않을까?
    • gemini의 가이드 학습 도구를 사용해서 학습을 시작해보자.

Java와 Go의 차이를 간단하게 정리해보자.

특징Java / SpringGo
실행 방식JVM 위에서 바이트코드 실헹정적 컴파일된 단일 바이너리 실행
객체지향클래스, 상속, 인터페이스구조체, 임베딩, 덕 타이핑 인터페이스
동시성OS 스레드 / 가상 스레드 (Loom)고루틴 & 채널
에러 처리try-catch-finally (예외 기반)명시적 에러 반환 (value, error)
의존성 주입Spring DI (런타임 리플렉션 중심)명시적 생성자 주입 (컴파일 타임 중심)

Go의 변수 선언과 제어문

변수 선언 (Variable Declaration)

특징JavaGo
명시적 선언int age = 30;var age int = 30
타입 추론var name = "Gemini";`name := "Gemini"
제로 값(Zero Value)초기화 필수 (지역 변수)선언 시 자동으로 제로 값 할당 (0, "", false 등)

제어문

  • Go의 철학은 "가장 적은 키워드로 해결한다"
  • 그래서 while 이나 do-while이 없고 오직 for만 존재
    • 반복문:
      • 표준 : for i := 0; i < 10; i++ { ... }
      • while 처럼 동작 : for condition { ... }
      • 무한 루프 : for { ... }
    • 조건문:
      • if문에 초기화 문장을 넣을 수 있음
      • 예 : if val := getVal(); val > 10 { ... }
      • 여기서 val은 if 블록 안에서만 유효하다

그래서 단축 선언(:-)과 하나의 for문이 주는 장점은 뭘까?

  • 인지적 부하(Cognitive Load)를 줄이는데 있음
  • Java 프로젝트를 리뷰하다 보면, 어떤 사람은 while을 쓰고, 어떤 사람은 for를 써서 같은 로직을 다르게 구현한 것을 본적이 있을 것임
  • Go는 이 선택지를 하나로 통일함으로써 얻는 이득이 큼

Go의 "One Way" 철학이 주는 장점

  • 읽기 일관성
    • 누가 코드를 짜더라도 반복문은 무조건 for로 시작
    • 코드를 읽을 때 "이게 어떤 종류의 루프지?"라고 판단하는 시간이 사라짐
    • 내 생각엔 같은 for여도 단순 반복, while, 무한 루프가 섞이니깐 더 커지는거 아닌가..?
  • 복잡도 감소
    • while, do-while 같은 키워드가 없으므로 언어 자체가 단순함
    • 이는 컴파일러 최적화와 정적 분석 도구 제작을 더 쉽게 만듬
  • 유연한 변신
    • Go의 for는 조건식만 남기면 `while이 되고, 다 비우면 무한 루프가 됨
    • 키워드를 바꿀 필요 없이 구조만 살짝 바꾸면 됨

논리 흐름의 단순화

  • 논리 흐름이 복잡하지 않다는 말은 예측 가능성이 높다는 뜻이기도 함
  • Java에서는 Iterator를 쓰거나, Stream을 쓰거나, 일반 for를 쓰는 등 선택지가 많음
    • 설계 고민이 길어 질 수 있음
  • Go는 일단 for와 range로 짜라는 가이드가 명확
go 카테고리의 다른 글 보기수정 제안하기
목차
  • Go 언어 기본 학습
  • Java와 Go의 차이를 간단하게 정리해보자.
  • Go의 변수 선언과 제어문
  • 변수 선언 (Variable Declaration)
  • 제어문
  • 그래서 단축 선언(`:-`)과 하나의 `for`문이 주는 장점은 뭘까?
  • Go의 "One Way" 철학이 주는 장점
  • 논리 흐름의 단순화