4.2. 프로그램언어 고(Go)에서의 상수 타입

프로그램언어 고(Go)에서의 문자 상수 타입

프로그램언어 고(Go)에서 문자 상수는 rune 타입으로 정의됩니다. rune은 int32와 마찬가지로 32비트 정수형 타입입니다.


var ch rune = '가'

위와 같이 한글 문자를 rune 타입의 변수에 저장할 수 있습니다.

rune 타입은 유니코드 코드 포인트를 저장하기 위해 사용됩니다. 예를 들어 ‘가’ 문자의 유니코드 코드 포인트는 0xAC00입니다.


func printRune(r rune) {
    fmt.Printf("%U '%c'\n", r, r) 
}

printRune('가') // U+AC00 '가'

위의 예제코드에서 fmt 패키지의 Printf 함수를 사용하여 rune 타입 변수의 유니코드 코드 포인트와 문자를 출력할 수 있습니다.

rune 타입은 유니코드 지원을 위해 사용되므로 한글과 같은 multi-byte 문자를 저장하기 위해 문자가 아닌 rune 타입을 사용해야 합니다.

문자열을 rune 슬라이스로 변환하여 한 문자씩 접근할 수도 있습니다.


func printCharacters(s string) {
    runes := []rune(s)
    for i := 0; i < len(runes); i++ {
        fmt.Printf("%c ",runes[i])
    }
}

printCharacters("고래") // 고 래

이처럼 고(Go)언어에서 문자 상수를 사용할 때에는 rune 타입을 사용하여 유니코드 문자를 올바르게 처리할 수 있도록 해주세요.

프로그램언어 고(Go)에서의 숫자 상수 타입

고(Go) 프로그래밍 언어의 숫자 상수 타입에 대해 설명드리겠습니다.

고(Go)에서는 정수, 실수, 복소수 등의 숫자 상수를 지원합니다. 이러한 숫자 상수의 타입은 값에 따라 자동으로 결정됩니다.


package main

import "fmt"

func main() {
    // 정수 상수 - int 타입
    var integer int = 10

    // 실수 상수 - float64 타입 
    var floatingPoint float64 = 3.14
    
    // 복소수 상수 - complex128 타입
    var complex complex128 = 1 + 2i

    fmt.Printf("integer 타입: %T \n", integer)
    fmt.Printf("floatingPoint 타입: %T \n", floatingPoint) 
    fmt.Printf("complex 타입: %T \n", complex)
}

위의 예제코드에서 볼 수 있듯이,

- 10과 같은 정수 상수는 int 타입으로 결정됩니다.
- 3.14와 같은 실수 상수는 float64 타입으로 결정됩니다.
- 1 + 2i와 같은 복소수 상수는 complex128 타입으로 결정됩니다.

이는 고(Go)가 해당 숫자 상수 값을 통해 가장 적합한 타입을 자동으로 추론하기 때문입니다.

따라서 프로그래머가 명시적으로 타입을 선언하지 않더라도 적절한 타입이 결정됩니다.

마지막으로 fmt.Printf 함수를 이용하여 각 변수의 타입이 어떻게 결정되었는지 출력하고 있습니다.

이상으로 고(Go) 프로그래밍 언어의 숫자 상수 타입에 대한 설명을 마치겠습니다. 추가적인 질문이 있으시면 언제든지 답변 드리겠습니다.

프로그램언어 고(Go)에서의 부울 상수 타입

프로그램언어 고(Go)에서의 부울 상수 타입은 true와 false 두 가지 값을 가집니다.


package main

import "fmt"

func main() {

  var b1 bool = true
  var b2 bool = false

  fmt.Println(b1) // true
  fmt.Println(b2) // false

}

위의 예제코드에서 보시다시피 변수 b1과 b2는 각각 true와 false 값을 가집니다.

부울 상수 타입은 주로 조건문이나 반복문에서 값의 참(true) 거짓(false)을 판단하는 데 사용합니다.


func check(n int) bool {
  if n > 10 {
    return true 
  } else {
    return false
  }
}

위 함수는 정수 n 값이 10보다 큰지 여부를 판단하여 true나 false를 리턴합니다.

이렇게 부울 상수 타입은 프로그램의 흐름 제어에 중요한 역할을 합니다.

값의 유무, 존재 여부, 성공 실패 등을 표현할 때도 자주 사용되죠.

부울 상수 타입은 1바이트 크기를 가지며, 아주 간단하지만 굉장히 중요한 타입입니다.

좋은 하루 되세요.

프로그램언어 고(Go)에서의 런타임 상수 타입

프로그램언어 고(Go)에서 런타임 상수 타입은 상수 값을 가지는 타입입니다. 이는 컴파일 타임에 결정되는 값이 아니라 실행중에 결정되는 값을 말합니다.

예를 들어,


const (
    A = iota
    B
    C
)

func main() {
    println(A, B, C) 
}

위의 A, B, C는 컴파일 타임에 이미 값이 정해져 있습니다.

반면 런타임 상수 타입은 실행중에 값이 결정됩니다. 대표적인 런타임 상수 타입으로 os.Stdout이 있습니다.


package main

import (
    "os"
)

func main() {
    stdout := os.Stdout 

    // stdout은 런타임시 할당됩니다
} 

os.Stdout은 실행중에 운영체제로부터 파일描述자를 받아오기 때문에, 컴파일 타임에 값이 확정되지 않고 런타임 때 값이 확정됩니다.

따라서 이는 런타임 상수 타입이라고 볼 수 있습니다. 런타임 상수 타입은 주로 시스템 호출이나 환경 변수같은 런타임 값을 담는데 사용합니다.

프로그램언어 고(Go)에서의 열거형 상수 타입

Go언어에서 열거형 상수 타입은 관련된 상수들의 집합을 정의하는 타입입니다. 열거형을 정의하면 해당 열거형 타입의 변수는 정의된 상수 값들 중 하나를 가질 수 있습니다.

package main

import "fmt"

type Color int

const (
   Red Color = iota 
   Blue
   Green
)

func main() {
   var c Color = Red
   fmt.Println(c) 
}

위의 예제에서 Color라는 열거형 타입을 정의하고 Red, Blue, Green 상수를 정의했습니다. Color 타입의 변수 c는 Red, Blue, Green 중 하나의 값을 가질 수 있습니다.

열거형을 사용하면 코드 가독성을 높일 수 있고, 입력 범위를 제한하여 버그를 줄일 수 있다는 장점이 있습니다. 또한 열거형 타입별로 메서드를 정의할 수도 있습니다.

이 외에도 열거형은 Marshal/Unmarshal, Stringer, TextMarshaler/TextUnmarshaler 인터페이스와 함께 사용될 수 있습니다.

이상 Go언어의 열거형 상수 타입에 대해 간략히 설명해 드렸습니다. 열거형 사용에 대한 보다 자세한 예제와 설명이 필요하시다면 말씀해 주세요.

Leave a Comment