728x90

언어에서는 변수뿐만이 아니라 상수도 존재한다.

사실 C언어의 영향으로 대부분의 경우에는 값의 기본타입은 변수고 특별한 경우는 상수로 두는 경우가 많다.

그러나 최근 언어는 상수형과 변수형을 확실히 분할하는 경우가 많다.

이는 Go역시 그렇다.

아래의 예제를 보도록 하자.


package main

import "fmt"

func main() {
const a int = 10
const b = 20
const (
sun = 0
mon = 1
tue = 2
wed = 3
thu = 4
fri = 5
sat = 6
)
fmt.Println(a, b)
fmt.Println(sun, mon, tue, wed, thu, fri, sat)
}

상수를 선언하는 예시또한 변수와 같다.

한번 실행해보도록하자.



만약 상수를 ()로 묶어서 표현한다면, 값을 순서대로 넣어준다면 iota키워드로 순서대로 자동 배치할 수 있다.

가령 아래와 같이 말이다.

package main

import "fmt"

func main() {
const (
sun = iota
mon
tue
wed
thu
fri
sat
)
fmt.Println(sun, mon, tue, wed, the, fri, sat)
}

위의 경우 sun을 iota로 지정해주면 저 값은 자동으로 0이되고 아래 ()블럭 안에 있는 녀석들은 순서대로 1,2,3,4,5,6이 배치된다.



iota에 대해서는 할말이 많지만 여기서는 짧게 언급만하겠다.


package main

func main() {
const a = 10
a = a * 10
}

상수라는 말에서 알 수 있듯이 상수의 경우에는 초기화만 할 수 있지 값을 새로 배정할 수 없다.

만약 그런 로직이 존재한다면 컴파일을 거부한다.



실행을 하면 계산을 할 수 없다고 버티는걸 확인할 수있다.

'Programming > Go' 카테고리의 다른 글

[Go-06]switch(스위치)  (0) 2018.08.31
[Go-05]조건문  (0) 2018.08.31
[Go-04]연산자  (0) 2018.08.31
[Go-02]변수  (0) 2018.08.31
[Go-01]Hello world!  (0) 2018.08.13

+ Recent posts