Programming/GO Language

문법) 변수와 상수

big_brother 2014. 3. 27. 11:02

아무래도 문법에 대해서 이야기할려면 변수와 상수부터 이야기해야겠지요.

C언어는 공식적으로 C언어의 적자입니다.

그렇기에 C언어를 알고 계신다면 큰 어려움없이 익히실 수 있을듯 합니다.

이 글은 여러분이 C언어를 알고 있다는 가정 아래 진행합니다.



1. 변수


c언어 스타일로 변수를 선언한다면 이렇게 되겠지요.


int a;


이를 Go 스타일로 바꾸면 


var a int


일단 다른 C언어와 다른 점은 세미콜론이 없어도 된다는 겁니다. 옵션입니다.

Go 언어는 세미콜론이 없습니다. 또한 형(Type)이 뒤에 붙습니다.

앞에 var는 variable을 뜻하지요.

같은 내용을 배열의 선언으로 보시죠


C언어 :   int a[10];

Go언어 : var a [10]int


다른듯하면서 이해하기는 쉽습니다.

앞에 var이 붙고 변수명이 붙고 뒤에는 타입이 붙습니다.

여러 변수를 선언한다면 이렇게 표현할 수도 있습니다.


var(

a int

f float64

s string

)


변수들은 선언과 동시에 초기화가 됩니다.

혹은 이렇게 초기화를 해줘도 됩니다.


var(

a int = 4

f float64 = 4.01

s string = "hi"

)


또는 이렇게 타입을 빼고 선언을 할수도 있습니다.


var a = 4


비슷한 방법으로는 이런것도 있습니다.


v := 4


위에 두 방식으로 선언을 하면 컴파일러가 알아서 변수 타입을 선택합니다.

var v int = 4 와 같은 의미지요. 그렇기에 초기화를 하는 경우에만 해당 방법을 사용할 수 있습니다.

var v 이런식으로는 선언이 안된다는 거지요.


종합해보면 Go의 변수 선언 방식은 아래와 같은 방식들이 있습니다.


1. var a int

2. var(

a int

)

3. var a int = 4

4. var a = 4 

5. a := 4


느낌상으로 C언어와 비슷하면서 자동화가 많은 부분 이루어진 느낌입니다.

변수의 종류에 대해서는 다른 포스트에서 다루기로 하겠습니다. 좀 내용이 많습니다.


2. 상수


Go언의 상수는 선언시 타입을 가지지 않지도 않고 크기에 제한도 없습니다.

이런식으로 선언이 가능하다는 겁니다.


const a = 1 << 100 


하지만 상수가 타입이 필요한 곳에서는 제한이 들어갈 수 있습니다.


enum의 경우 Go에서 지원하지 않습니다. 대신 iota를 이용해 연속되는 값을 얻을 수 있습니다.


const (

red = iota //0

blue        //1

green      //2

)