수색…


비고

Go는 문자, 문자열, 부울 및 숫자 값의 상수를 지원합니다.

상수 선언하기

상수는 변수처럼 선언되지만 const 키워드를 사용하여 선언됩니다.

const Greeting string = "Hello World"
const Years int = 10
const Truth bool = true

변수와 마찬가지로 대문자로 시작하는 이름은 내보내고 ( 공용 ) 소문자로 시작하는 이름은 그렇지 않습니다.

// not exported
const alpha string = "Alpha"
// exported
const Beta string = "Beta"

상수는 값을 변경할 수 없다는 것을 제외하고는 다른 변수와 마찬가지로 사용할 수 있습니다. 다음은 그 예입니다.

package main

import (
    "fmt"
    "math"
)

const s string = "constant"

func main() {
    fmt.Println(s) // constant

    // A `const` statement can appear anywhere a `var` statement can.
    const n = 10
    fmt.Println(n)                           // 10
    fmt.Printf("n=%d is of type %T\n", n, n) // n=10 is of type int

    const m float64 = 4.3
    fmt.Println(m) // 4.3

    // An untyped constant takes the type needed by its context.
    // For example, here `math.Sin` expects a `float64`.
    const x = 10
    fmt.Println(math.Sin(x)) // -0.5440211108893699
}

운동장

다중 상수 선언

동일한 const 블록 내에서 여러 개의 상수를 선언 할 수 있습니다.

const (
    Alpha = "alpha"
    Beta  = "beta"
    Gamma = "gamma"
)

iota 키워드를 사용하여 상수를 자동으로 증가시킵니다.

const (
    Zero = iota // Zero == 0
    One         // One  == 1
    Two         // Two  == 2
)

iota 를 사용하여 상수를 선언하는 예제는 Iota를 참조하십시오.

다중 할당을 사용하여 여러 상수를 선언 할 수도 있습니다. 그러나이 구문은 읽기가 어려우므로 일반적으로이 구문을 사용하지 마십시오.

const Foo, Bar = "foo", "bar"

형식화 된 형식과 형식이 지정되지 않은 상수

Go의 상수는 입력되거나 유형이 지정되지 않을 수 있습니다. 예를 들어, 다음 문자열 리터럴이 주어진 경우 :

"bar"

리터럴 유형이 string 이라고 말할 수도 있지만, 이는 의미 상 올바르지 않습니다. 대신 리터럴은 유형지정되지 않은 문자열 상수 입니다. 문자열 (더 정확하게는 기본 유형string 임)이지만 Go 이 아니므로 입력 된 컨텍스트에서 할당되거나 사용될 때까지 유형이 없습니다. 이것은 미묘한 구별이지만 이해할 수있는 유용한 것입니다.

마찬가지로 상수에 리터럴을 할당하면 다음과 같습니다.

const foo = "bar"

기본적으로 상수는 유형이 지정되지 않으므로 형식이없는 채로 있습니다. 다음과 같이 유형이 지정된 문자열 상수 로 선언 할 수도 있습니다.

const typedFoo string = "bar"

차이점은 유형이있는 컨텍스트에서 이러한 상수를 할당하려고 할 때 발생합니다. 예를 들어, 다음 사항을 고려하십시오.

var s string
s = foo      // This works just fine
s = typedFoo // As does this

type MyString string
var mys MyString
mys = foo      // This works just fine
mys = typedFoo // cannot use typedFoo (type string) as type MyString in assignment


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow