변수는 초기화된 이후에 다른 값으로 수정이 가능
하지만 상수는 한 번 초기화되면 그 후에 수정이 불가능
상수는 다른 언어들과 동일하게 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" const e, f = "LEE", 914 //여러 형식 값을 초기화 할 수 있음 fmt.Println(username) fmt.Println(a, b, "d\n", c, e, f) }
출력
kim 1 10 d goorm LEE 914
상수는 변수와 다르게 괄호 ()
를 이용해 여러개의 값을 묶어서 초기화 할 수 있다. 다른 형이더라도 초기화할 수 있다.
코드
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) }
출력
10 10 10 goorm goorm 5 6 7 earth earth End
코드
package main import "fmt" const ( c1 = 10 //첫 번째 값은 무조건 초기화해야 함 c2 // 값을 주지 않으면 앞의 값을 따라간다! c3 c4 = "goorm" //다른 형 선언 가능 c5 c6 c7 = iota //c8까지 index값 저장 (0, 1, 2, 3, 4, 5 시작!) c8 c9 = "earth" c10 c11 = "End" ) func main() { fmt.Println(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) }
출력
10 10 10 goorm goorm goorm 6 7 earth earth End