수색…
비고
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