티스토리 뷰

반응형

Go 언어에서 **상수 (constant)**는 프로그램 실행 중에 절대로 변경되지 않는 값입니다.

예를 들어, 수학에서의 원주율 π처럼 항상 고정된 값을 표현할 때 사용합니다.

Go에서는 상수를 선언할 때 const 키워드를 사용합니다.

Go 언어에서 상수 사용하기

1. 상수 선언 방법

상수는 const 키워드를 사용하여 선언합니다. 선언 후에는 값을 변경할 수 없습니다. 컴파일 타임에 그 값이 결정되므로, 상수는 프로그램의 어느 곳에서도 안전하게 사용할 수 있습니다.

package main

import "fmt"

func main() {
    // 정수형 상수 선언
    const pi = 3.14
    // 문자열 상수 선언
    const greeting = "Hello, Go!"

    fmt.Println(pi)       // 출력: 3.14
    fmt.Println(greeting) // 출력: Hello, Go!
}

2. 타입이 있는 상수와 타입이 없는 상수

Go의 상수는 타입이 있는 상수타입이 없는 상수로 구분됩니다.

  • 타입이 없는 상수는 특별한 타입을 지정하지 않고 선언합니다. 필요에 따라 다양한 타입으로 변환되어 사용할 수 있습니다.
  • 타입이 있는 상수는 특정 타입으로 선언되며, 해당 타입으로만 사용될 수 있습니다.
package main

import "fmt"

func main() {
    // 타입이 없는 상수
    const a = 10
    // 타입이 있는 상수
    const b int = 20

    fmt.Printf("a: %v, Type: %T\n", a, a) // 출력: a: 10, Type: int
    fmt.Printf("b: %v, Type: %T\n", b, b) // 출력: b: 20, Type: int
}

3. 상수의 타입 변환

타입이 없는 상수는 사용할 때 자동으로 적절한 타입으로 변환됩니다. 하지만, 타입이 있는 상수는 명시적으로 타입 변환을 해야 합니다.

package main

import "fmt"

func main() {
    const x = 10   // 타입이 없는 상수
    const y int = 5 // 타입이 있는 상수

    // 타입이 없는 상수는 다른 타입의 변수에 대입 가능
    var z float64 = x

    fmt.Println(z) // 출력: 10

    // 타입이 있는 상수는 명시적 변환이 필요
    fmt.Println(float64(y)) // 출력: 5
}

4. 열거형 상수와 iota

Go에서는 iota를 사용하여 열거형 상수를 정의할 수 있습니다. iota는 0부터 시작하여 하나씩 증가하는 값들을 자동으로 할당해 줍니다.

package main

import "fmt"

func main() {
    // iota를 사용한 열거형 상수
    const (
        Red   = iota // 0
        Green        // 1
        Blue         // 2
    )

    fmt.Println(Red, Green, Blue) // 출력: 0 1 2
}

iota는 상수 선언 블록 내에서만 사용 가능합니다. 각 상수는 이전 상수 값에 1을 더한 값을 가지므로, 반복적으로 증가하는 값이 필요한 경우 간단하게 열거형 상수를 정의할 수 있습니다.

5. 상수의 활용 예시

상수는 프로그램에서 절대 변하지 않는 값을 나타낼 때 사용됩니다. 예를 들어, 물리 상수나 애플리케이션 설정 값 등을 정의할 때 사용합니다.

package main

import "fmt"

func main() {
    const Pi = 3.14159
    const EarthGravity = 9.8 // 중력 가속도 (m/s^2)

    fmt.Printf("Pi: %f\n", Pi)
    fmt.Printf("Earth Gravity: %f\n", EarthGravity)
}

요약

  • 상수는 변경되지 않는 값을 표현하며, const 키워드를 사용하여 선언합니다.
  • 타입이 있는 상수타입이 없는 상수로 나눌 수 있으며, 각각의 특성에 맞게 사용됩니다.
  • iota를 사용하여 열거형 상수를 정의할 수 있으며, 이로써 반복적인 상수 선언을 간편하게 처리할 수 있습니다.

Go에서 상수는 프로그램의 안전성과 가독성을 높이는 중요한 요소입니다. 변경되지 않는 값들을 상수로 정의하여 코드의 의도를 명확히 하고, 의도치 않은 값 변경을 방지할 수 있습니다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함