backend

Go 언어 시작하기: 변수와 타입부터 정리해보기

mirabo01 2026. 1. 10. 21:50

Go 언어를 공부하려고 자료를 찾아보면 “단순하다”, “컴파일이 빠르다”, “동시성에 강하다” 같은 설명을 자주 보게 된다.
하지만 막상 시작해보면 가장 먼저 부딪히는 건 변수 선언 방식과 타입 시스템이다.
다른 언어와 비슷해 보이면서도 미묘하게 다른 규칙들이 있어서, 초반에 정리를 잘 해두는 게 중요하다.

이 글은 Go를 처음 접하는 사람, 혹은 문법을 한 번 훑어보고 정리하고 싶은 사람을 대상으로 한다.
특히 변수 선언 방식과 타입 관련 문법을 중심으로 정리해본다.


Go에서 변수를 선언하는 기본 방식

Go에서 변수를 선언하는 방법은 크게 두 가지다.

var 키워드를 사용하는 방식

var a int
var b string = "hello"
  • var 변수명 타입 형태가 기본이다
  • 초기값을 주지 않으면 타입의 zero value가 자동으로 들어간다
    • int → 0
    • string → ""
    • bool → false

실제로 써보면, 명시적으로 타입을 드러내야 할 때 이 방식이 더 읽기 좋다.


짧은 선언 방식 (Short Variable Declaration)

c := 10
d := "world"
  • 함수 내부에서만 사용 가능
  • 타입은 컴파일러가 자동으로 추론한다

Go 코드를 보다 보면 이 방식이 훨씬 많이 등장한다.
간단한 로직에서는 타이핑이 줄어들어 가독성이 좋아진다.

⚠️ 주의할 점
짧은 선언은 이미 선언된 변수에는 사용할 수 없다.
기존 변수에 값을 다시 할당할 때는 =를 사용해야 한다.


Go의 기본 타입 정리

Go는 타입이 단순한 편이지만, 명확하게 구분되어 있다.

숫자 타입

var i int = 10
var f float64 = 3.14
  • int, int64, float64 등이 명확히 구분된다
  • 서로 다른 타입 간에는 자동 형변환이 없다

실제로 써보면, 타입 변환을 명시적으로 해야 해서 초반엔 번거롭게 느껴질 수 있다.
하지만 이 덕분에 의도하지 않은 버그를 줄일 수 있다.


문자열 타입

var s string = "golang"
  • 문자열은 string 타입 하나만 존재
  • 문자열은 기본적으로 불변(immutable)

문자열을 수정해야 하는 경우에는 strings.Builder 같은 도구를 사용하는 게 일반적이다.


불리언 타입

var ok bool = true
  • 조건문에서 반드시 bool 타입만 사용 가능
  • 다른 언어처럼 0, 1을 조건식으로 사용할 수 없다

이 부분은 C 계열 언어에 익숙한 사람이라면 처음엔 어색할 수 있다.


타입 추론과 명시의 균형

Go는 타입 추론을 지원하지만, 완전히 타입을 숨기지는 않는다.
코드를 작성하다 보면 다음과 같은 기준이 생긴다.

  • 값의 의미가 명확하면 := 사용
  • API 경계, 구조체 필드, 반환값 등은 타입 명시

실제로 프로젝트를 하다 보면, 이 기준이 코드 리뷰에서도 자주 언급된다.


정리

Go의 변수와 타입 문법은 단순하지만,
명시성과 일관성을 중요하게 설계되어 있다.

  • 변수 선언 방식은 var와 := 두 가지
  • 기본 타입은 명확하게 구분되며 자동 변환은 없다
  • 초반에 타입 규칙을 이해해두면 이후 학습이 훨씬 수월하다

이런 사람에게 적합하다

  • Go를 처음 배우면서 문법을 차근차근 정리하고 싶은 경우
  • 다른 언어 경험은 있지만 Go 스타일이 낯선 경우

반대로, 이미 Go로 실무를 하고 있다면 이 내용은 다소 기본적으로 느껴질 수 있다.
다음 글에서는 제어문과 반복문, 혹은 구조체와 메서드 쪽으로 이어가는 게 자연스럽다.