Go 언어 시작하기: 변수와 타입부터 정리해보기
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로 실무를 하고 있다면 이 내용은 다소 기본적으로 느껴질 수 있다.
다음 글에서는 제어문과 반복문, 혹은 구조체와 메서드 쪽으로 이어가는 게 자연스럽다.