[Go 언어] 5. 강력한 타입 언어, Go 언어 변수 선언 맛보기

안녕하세요. 언제나 휴일, 언휴예요. 이전 게시글 1~4까지는 Go 언어 소개 및 윈도우즈에서 SDK 설치 및 통합 개발 환경 LiteIDE를 다운로드하고 간단한 테스트 코드를 작성했어요.

이번 게시글부터는 본격적인 Go 언어의 문법과 프로그래밍에 관하여 다룰 거예요. 그리고 첫 번째 주제는 변수 선언 맛보기입니다.

그런데 제목을 “강력한 타입 언어 go 에서의 변수 선언 맛보기”라고 정한 것이 보이죠. “강력한 타입 언어”라는 문구가 다소 낯설게 느껴질 거예요. Go 언어를 계속 사용하다보면 자연스럽게 알 수 있는 내용이지만 이제까지 사용했던 C언어나 C++ 등과는 차이가 있는 개념이라 무리하게 넣어봤어요.

강력한 타입 언어는 Strong Type Language를 직역한 것인데 반대 개념으로 약한 타입 언어 Weak Type Language가 있어요. 약한 타임 언어에서는 변수나 여러 표현에서 사용하는 값의 형식을 검사할 때 명시하지 않은 형변환을 묵시적으로 형변환을 하는 부분이 있음을 얘기해요. C언어에서 float 형식 변수에 정수 값을 대입하였을 때 컴파일러는 묵시적으로 형변환을 하죠. 형식을 잘못 사용한 모든 표현에서 묵시적 형변환을 하지는 않지만 일부 표현에서 묵시적 형변환이 이루어집니다. 따라서 C언어는 약한 타입 언어예요.

하지만 Go 언어에서는 강력한 타입 언어예요. 이러한 개념은 보다 많은 숙련 속에서 다가올 개념이지만 사용하면서 보다 많이 느낄 수 있게 미리 던져봅니다. 다소 머리 아프다고 생각하신다면 무시하고 넘어가셔도 학습에 지장은 없습니다. 깊이에서 차이가 있을 뿐~

Go 언어는 보다 명확하고 직관적이고 신뢰성을 추가하면서 편의성을 통해 높은 생산성을 추구하는 언어입니다. 형식에 관한 부분은 묵시적으로 형변환하는 컴파일러가 편의성이 높아 보이지만 개발자의 의도와 다르게 값이 변하여 버그가 있는 코드일 때가 있습니다.

너무 앞에서부터 고리타분한 개념적인 얘기를 꺼냈네요. 이런 부분은 자신의 수준에 따라 받아들일 수 있는 부분까지만 받아들이세요. 그리고 제가 쓰는 글을 무조건 수용하지 마시고 냉철한 분석과 비판 의식 속에서 옳은 길을 찾길 바랍니다.

이제 다시 Go를 처음 다루는 관점으로 돌아가서 “변수 선언 맛보기”를 해 볼게요. 프로그래밍 언어에서 변수는 데이터(값)를 기억하는 도구라고 볼 수 있어요. 이를 위해 변수의 이름도 부여하고 해당 변수 이름과 결합한 메모리를 부여하는 등의 개념이 들어있죠. 이러한 개념 또한 자신의 수준에 맞게 받아들이세요. 하지만 변수가 데이터(값)을 기억하기 위한 도구라는 사실은 수준에 관계없이 알고 넘어가야 합니다.

먼저 LiteIDE를 실행하세요. 그리고 File 메뉴에서 New를 선택한 후에 “New Project or File” 창에서 “Browse…” 버튼을 눌러 새로운 폴더를 하나 생성하세요. 앞으로 새로운 프로젝트를 만들 때마다 이와 같이 할 거예요.

[그림 1] 새로운 프로젝트에 Example 소스 만들기
// Example 변수 선언
package StrongTypeVariable
 
import "fmt"
 
func main() {
    var i1 int
    var i2 int = 2
    var i3 = 3
    i4 := 4
 
    fmt.Println(i1)
    fmt.Println(i2)
    fmt.Println(i3)
    fmt.Println(i4)
}

Go 언어에서는 다양한 방법으로 변수를 선언할 수 있어요.

  •     var i1 int

변수를 선언할 때 var 키워드를 명시한 후에 변수명을 부여하고 형식을 지정합니다. i1이 변수명이고 int가 형식이예요. 정수 형식 변수 i1을 선언한 것이죠. 이와 같이 선언하면 초기값은 0으로 지정합니다.

  •     var i2 int = 2

Go 언어에서는 변수 선언과 동시에 개발자가 원하는 값으로 초기화할 수 있어요.

  •     var i3 = 3

Go 언어에서는 변수 선언과 초기화를 같이 할 때는 형식을 지정하지 않을 수 있습니다. 강한 형식 언어이기 때문에 초기화에 사용한 값의 형식과 변수의 형식은 일치하며 어떠한 혼돈도 일어나지 않게 선명하기 때문이예요.

  • i4 := 4

그리고 Go언어에서는 var 키워드 없이 변수명과 := 와 초기값 지정을 하는 방법도 제공하고 있습니다. 마찬가지로 강항 형식 언어이므로 초기값에 사용한 형식이 변수의 형식임이 자명합니다.

빌드와 실행(Ctrl+B)하여 결과를 확인해 보세요. 초기값을 지정하지 않은 i1의 값이 0으로 출력하는 것을 알 수 있어요.

[그림 2] 실행 화면