[Go] #2.3 상수의 선언과 초기화

[Go] #2.3 상수의 선언과 초기화

강의 링크 : 한 눈에 끝내는 고랭 기초 #2 변수와 상수 - 상수의 선언과 초기화


3. 상수의 선언과 초기화


변수에 이어서 이번에는 상수다.

상수의 선언과 초기화는 여타 언어들처럼 const 를 사용한다.
선언 형태는 다음과 같다.

const 상수이름 상수형

상수형 은 생략 가능하고, 함수 밖에서도 동일한 용법이 적용된다.

참고로, 상수는 선언과 초기화를 반드시 동시에 해야하며, 선언만 할 경우 에러가 발생한다.
다만 변수와는 다르게, 초기화 후에 사용하지 않아도 에러가 발생하지 않는다.
상수는 명시하는 것 자체에 의미가 있기 때문이다.
상수는 var 키워드 대신에 const 를 사용하고 생략할 수 없기 때문에 자연스럽게 := 용법을 사용할 수 없다.

샘플 코드를 보자.

package main

import "fmt"

const username = "kim"

func main() {
	const a int = 1    
    const b, d= 10, 20 //여러 값을 초기화할 수 있음
	const c = "goorm"
	
	
	fmt.Println(username)
}

1

상수이기 때문에 사용하지 않아도 에러가 발생하지 않으며, Println 함수에 인수로 넣을 수 있음을 확인했다.

const (
	상수이름1 = 1
	상수이름2 = 2
	...
)

또한 상수는 위와 같이 괄호 () 를 이용해 여러 개의 값을 묶어서 초기화할 수 있으며, 다른 형이라도 상관없다.
또한 괄호의 시작과 끝 위치는 상관없지만, 각 상수들은 반드시 개행하여 초기화 해야한다.
그냥 개행만 할 뿐, 각 상수들 사이에 콤마 , 를 넣으면 안된다.
또한 묶어서 선언된 상수들 중 첫번째 값은 꼭 초기화되어야 하고, 초기화되지 않은 값은 바로 전 상수의 값을 가진다.
iota 라는 식별자를 값으로 초기화하면 그 후에 초기화하지 않고 이어지는 상수들은 순서(index)가 값으로 저장된다.

주의사항이 많다 …
샘플 코드를 보면서 이해해보자.

package main

import "fmt"

const ( 
	c1 = 10 //첫 번째 값은 무조건 초기화해야 함
	c2
	c3
	c4 = "goorm" //다른 형 선언 가능
	c5
	c6 = iota //c8까지 index값 저장
	c7
	c8
	c9 = "earth"
	c10
	c11 = "End"
)

func main() {
	fmt.Println(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
}

2

c1 은 무조건 초기화 해야한다.
그 뒤로 이어지는 c2 , c3 은 바로 전 상수인 c1 의 값을 가진다.
c4 는 앞과 다르게 string 형으로 초기화 되었다.
c5c4 의 값을 가진다.
c6iota 라는 식별자를 값으로 초기화되었기 때문에, 순서(index) 로 할당된다.
c6 부터 c8 까지 5, 6, 7이 할당되었으므로, 제일 첫 인덱스는 0인 것 같다.
c9 부터 c11 은 생략.


© 2022. All rights reserved.