[Golang] 상수

2021-09-25 hit count image

Golang에서 상수를 선언하고 사용하는 방법에 대해서 알아봅시다.

개요

이번 블로그 포스트에서는 Golang에서 상수를 선언하고 사용하는 방법에 대해서 알아봅니다. Golang에서 변수를 선언하고 사용하는 방법에 대해 궁금하신 분들은 아래에 링크를 참고하시기 바랍니다.

이 블로그 포스트에서 소개하는 코드는 다음 링크를 통해 확인하실 수 있습니다.

상수

상수는 변수와 다르게 설정한 값을 변경할 수 없습니다. Golang에서 상수를 사용하는 방법을 알아보기 위해 main.go 파일을 생성하고 다음과 같이 수정합니다.

package main

import "fmt"

func main() {
    const num int = 10

    fmt.Println(num)
}

Golang에서 다음과 같이 const 키워드를 사용하여 상수를 선언합니다.

// const 상수명 타입 = 초기값
const value int = 10

상수는 초기값을 생략할 수 있는 변수와 다르게 항상 초기화를 해야합니다. 그렇지 않으면 컴파일 에러가 발생합니다.

const value int = 10
value = 20 // ERROR

한번 초기화된 상수는 다시 값을 설정할 수 없습니다. 값을 설정하게 되면 컴파일 에러가 발생합니다.

상수의 타입

상수도 변수처럼 타입을 지정하지 않고 생략할 수 있습니다. 하지만 상수는 변수와는 다르게 상수를 사용하는 시점에 타입이 결정됩니다.

func main() {
    const PI = 3.14

    var a int = PI * 100

    fmt.Println(a)
}

Golang은 같은 타입만 연산이 가능합니다. 따라서 float 타입인 3.14에 int 타입인 100을 곱하는 연산은 할 수 없습니다. 하지만 상수에 타입을 지정하지 않았으므로, 상수를 사용하는 시점에서 타입이 결정되므로 위에 코드는 컴파일 에러가 발생하지 않습니다.

func main() {
    const PI float32 = 3.14

    var a int = PI * 100 // ERROR

    fmt.Println(a)
}

하지만 위와 같이 상수를 타입과 함께 정의하는 경우, 타입이 다르다고 판단하여 컴파일 에러가 발생하게 됩니다.

func main() {
    var PI = 3.14

    var a int = PI * 100 // ERROR

    fmt.Println(a)
}

변수는 상수와 다르게 변수를 선언할 때, 타입이 결정됩니다. 따라서 위와 같이 상수 대신 변수를 사용하면 컴파일 에러가 발생합니다.

열거형

Golang에서는 상수를 다음과 같이 열거형(Enum)으로 많이 활용합니다.

const (
    Red   int = 0
    Blue  int = 1
    Green int = 2
)

func main() {
    fmt.Println(Red)
    fmt.Println(Blue)
    fmt.Println(Green)
}

프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.

0
1
2

iota

Golang에서는 다음과 같이 iota 키워드를 사용하면 좀 더 쉽게 열거형 상수를 생성할 수 있습니다.

const (
    Red int = iota
    Blue int = iota
    Green int = iota
)

func main() {
    fmt.Println(Red)
    fmt.Println(Blue)
    fmt.Println(Green)
}

반복적으로 사용되는 타입과 iota는 다음과 같이 생략이 가능합니다.

const (
    Red int = iota
    Blue
    Green
)

또한, 타입도 생략이 가능하여 다음과 같이 간단하게 선언할 수 있습니다.

const (
    Red = iota
    Blue
    Green
)

완료

이것으로 Golang에서 상수를 선언하고 사용하는 방법에 대해서 살펴보았습니다. 또한 iota를 활용하여 열거형 상수를 생성하는 방법에 대해서도 살펴보았습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts