식별자

식별자 (Identifiers)

Go 코드를 처음 접하면 이름 짓는 규칙이 궁금해져요. 변수명을 지을 때 띄어쓰기나 한글을 써도 되는지, 숫자로 시작해도 되는지 같은 고민 말이죠. Go에서는 '식별자(identifier)'라는 이름으로 프로그램 안의 개체를 부를 때 쓰는 규칙이 정해져 있어요. 이 규칙만 알면 어떤 이름이 유효한 이름인지 바로 판단할 수 있어요.

출처: Go Specification

본문

식별자(identifier)는 변수나 타입 같은 프로그램 개체에 이름을 붙여 주는 역할을 해요. Go에서 식별자는 하나 이상의 문자(letter)와 숫자(digit)로 이루어진 연속된 문자열이고, **첫 글자는 반드시 문자(letter)**여야 해요.

이 규칙을 EBNF 문법으로 표현하면 이렇게 돼요.

identifier = letter { letter | unicode_digit } .

첫 글자는 letter 하나여야 하고, 그 뒤에는 letterunicode_digit가 아무리 많이 와도 된다는 뜻이에요. 괄호 { }는 '반복'을, 마침표 .는 '여기서 정의 끝'을 나타내는 문법 표기예요.

규칙이 맞는 이름들의 예시를 볼게요.

a
_x9
ThisVariableIsExported
αβ

a처럼 한 글자짜리 이름도 되고, _x9처럼 밑줄로 시작하는 이름도 돼요. αβ처럼 그리스 문자도 letter로 취급되기 때문에 유효해요. 주의할 점은 숫자(unicode_digit)는 첫 글자로 올 수 없다는 것 — 그래서 9x 같은 이름은 쓸 수 없어요.

한편, 일부 식별자는 미리 선언된(predeclared) 것들이에요. 이건 우리가 따로 선언하지 않아도 Go가 미리 준비해 둔 이름들이라는 뜻이에요.

더 알아보기

식별자 이름 짓기에 한층 더 들어가면 **예약어(keyword)**도 알아야 해요. Go에는 특정한 의미로 미리 점유된 키워드가 있는데, 이런 단어들은 식별자로 쓸 수 없어요. 어떤 단어가 예약어인지는 Keywords 섹션에서 함께 다룰게요. 또 미리 선언된 식별자 목록이 궁금하다면 Predeclared identifiers 섹션을 확인해 보세요.