20241223

상수(const) 관련 -golang

상수(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