드디어 Go언어의 개념을 알아보는 첫 강의입니다. 프로그래밍의 개념과 언어 자체의 기본 개념을 제외하고는 어느 언어, 어느 책이든 가장 먼저 배우는 용법은 바로 '변수'입니다. 왜냐하면 프로그램은 '값'이 있어야 그 존재 가치가 있기 때문입니다. 값을 입력, 출력하고 연산하기 위해서는 꼭 메모리 공간이 필요합니다. 그래서 맨 처음에 해야하는 것이 어떤 형의 값을 저장할 공간을 선언하는 것입니다. Go에서의 변수 선언 방식은 var 변수이름 변수형
입니다. 그리고 변수를 선언한 곳에서 바로 초기값을 설정할 수 있습니다.
그리고 Go에서 변수를 선언할 때 가장 큰 특징은 'Short Assignment Statement'라고 불리는 :=
입니다. 이를 사용하면 별다른 형 선언 없이 타입 추론이 가능합니다. 굉장히 유용하게 쓰이니 잘 알아둬야 합니다.
하지만 주의해야할 점은 이 용법은 함수(func) 내에서만 사용이 가능합니다. 따라서 함수 밖에서(전역 변수)는 꼭 var
키워드를 선언해줘야합니다.
아래 코드를 보면 a
는 선언과 동시에 1로 초기화 됩니다. 그리고 c
와 d
는 오류없이 int
와 string
이라는 자료형으로 자동 지정됩니다.
그리고 Go에서는 변수를 선언하고 초기값을 설정하지 않으면 'Zero value'로 설정됩니다. 앞으로도 Zero value는 자주 등장하니 숙지해둬야 합니다. bool 타입은 false, 숫자 타입은 0, string 타입은 ""(빈 문자열)으로 입니다.
변수의 선언부터 Go언어의 특징을 알 수 있습니다. 사실 변수의 선언 뿐만이 아니라 모든 선언에서 동일하게 적용됩니다. Go언어에서는 선언만 하고 쓰지 않았다면 에러를 발생하며 컴파일에 실패합니다. 이는 변수, 패키지, 함수 등 모든 선언에서 동일하게 적용됩니다. Go언어를 소개할 때 간결하고 가독성이 좋고 코드가 짧다고 했습니다. 따라서 이렇게 메모리를 아무 이유없이 차지하는 변수들에 대해 굉장히 단호합니다. 따라서 꼭 쓰이는 변수만 선언해야하며 값을 지울때는 선언한 모든 부분을 지워야 합니다.
아래 변수를 선언하는 기본적인 코드를 바로 실행해보세요.
위에 첫 예시 코드를 보고 무언가 눈치 챈 수강생이 있을 겁니다. 바로 '주석'입니다. 주석은 컴파일 대상에서 제외시키는 용법으로서 프로그램 내에 삽입된 메모를 뜻합니다. 주석은 C언어와 동일합니다. //
는 한 줄을 주석처리하고, /* */
는 /*
과 */
사이에 들어간 내용을 라인에 상관없이 전부 주석처리합니다.
다른 언어와 마찬가지로 Go언어도 동일한 형의 변수를 한 번에 여러개 선언할 수 있습니다. 이때 변수의 개수와 초기화하는 값의 개수가 동일해야합니다. 만약 초기화하지 않는다면 모든 값을 초기화 하지 않아야합니다.
아래 여러 개의 변수를 한 번에 선언하고 초기화하는 코드를 바로 실행해보세요.
C와 C++ 언어와 비교해서 선언 방법에 차이가 있습니다. C 언어의 경우 int a
와 같이 타입이 먼저 오는데 반해, Go언어는 이름이 먼저오고 그 다음에 타입이 옵니다. 타입을 검사하는 Java 같은 언어에서도 타입이 앞에 오기 때문에 약간은 생소할 수 있습니다. 이러한 선언 방식에 대해서는 인간의 언어에 좀 더 가깝게 하기 위해서 라는 의견이 있습니다. 예컨데 var a string
은 "변수 a는 스트링이다."라는 식으로 해석 할 수 있기 때문에 좀 더 직관적이라는 주장입니다. var a string
을 풀어 쓰면 "Variable a is string"이 되니 그럴 듯하다고 볼 수 있습니다.