상수(const) 관련 -golang
상수(const)는
- 값이 변경되지 않는(값 변경불가), 이름을 가진, 고정된 값을 정의할 때 사용.
- 코드의 가독성을 높임.
- const 키워드를 사용하여 상수를 선언합니다.
- 의도치 않은 값 변경을 방지.
- 컴파일 시간에 값을 고정시키는 데 유용함.
상수 선언 방법: const 상수이름 = 값
const키워드 상수이름 타입 = 값
const okok int = 2
const okok = 2 // 정수를 할당하고 있기에, 자동으로 상수는 int가 됨.
// 이것을 자동 타입 추론이라고 합니다.
여러 상수들을 묶어서 선언 방법:
const (
aaaa = "okok"
bbbb = "okbari"
)
상수값을 0 부터 순차적으로 자동 부여 방법: iota 사용
const (
aaaa = iota // 0
bbbb // 1
cccc // 2
)
상수는 선언 후 값을 변경할 수 없다.
const Pi = 3.14
Pi = 3.14159 // 오류 발생- 값을 변경하여 오류가 발생함.
상수는 명시적으로 타입을 지정하거나 생략할 수 있다.
const A int = 10 // const키워드 상수이름 타입 = 값, 타입 지정
const B = 20 // const 상수이름 = 값, 타입 생략 (컴파일러가 타입 추론)
상수의 값은 반드시 컴파일 시간에 결정되어야 합니다.
const A = 1 + 2 // 가능 (컴파일 시간에 계산됨)
// 상수는 컴파일 시간에 값을 계산하고 고정해야 함.
//
var B = 3 //
var
로 선언된 변수는 런타임에 값을 할당받거나 계산 // 컴파일러는
var
변수의 값을 실행 전에 알 수 없습니다.const C = A + B // 오류 (B는 런타임에 결정됨)
//
const
는 반드시 타입과 값이 컴파일러가 알 수 있는 상태여야 하며, // 런타임 값과 연관될 수 없습
슬라이스, 맵, 구조체 같은 복합 데이터 타입은 상수로 선언할 수 없음.
const Array = []int{1, 2, 3} // 오류 발생
문자열도 상수로 선언할 수 있음.
const hiing = "Hello, World!"
숫자 상수는 명시적 변환 등을 통해 유형이 지정되기 전까지는 유형이 없슴.
const num = 42 // 타입이 없는 숫자 상수
var a int = num // int로 변환
iota
는 상수 블록에서 각 상수에 대해 순차적으로 증가하는 정수를 제공하기에,열거형이나 비트 마스크를 쉽게 정의할 수 있어요.
const (
Read = 1 << iota // 1 (2^0)
Write // 2 (2^1)
Execute // 4 (2^2)
)
fmt.Println(Read, Write, Execute) // 출력: 1 2 4