수색…


소개

Iota는 단조롭게 성장하는 시작 값에서 숫자 상수를 선언하는 방법을 제공합니다. Iota는 시스템 및 네트워크 프로그래밍에서 자주 사용되는 비트 마스크를 선언하고 관련 값이있는 다른 상수 목록을 선언하는 데 사용할 수 있습니다.

비고

iota 식별자는 상수 목록에 값을 할당하는 데 사용됩니다. iota가 목록에서 사용되면 0의 값으로 시작하고 상수 목록의 각 값에 대해 1 씩 증가하며 각 const 키워드에서 재설정됩니다. 다른 언어의 열거 형과 달리 iota는 표현식 (예 : iota + 1 )에서 사용할 수 있으므로 유연성이 향상됩니다.

iota의 간단한 사용

상수 목록을 만들려면 각 요소에 iota 값을 할당하십시오.

const (
  a = iota // a = 0
  b = iota // b = 1
  c = iota // c = 2
)

단축 된 방법으로 상수 목록을 만들려면 - iota 값을 첫 번째 요소에 할당하십시오.

const (
  a = iota // a = 0
  b        // b = 1
  c        // c = 2
)

식에 iota 사용하기

iota 는 표현식에서 사용될 수 있으므로 0부터 시작하는 간단한 증분 정수 이외의 값을 할당하는 데에도 사용할 수 있습니다. SI 단위의 상수를 만들려면 Effective Go 에서 다음 예제를 사용하십시오.

type ByteSize float64

const (
    _           = iota // ignore first value by assigning to blank identifier
    KB ByteSize = 1 << (10 * iota)
    MB
    GB
    TB
    PB
    EB
    ZB
    YB
)

값 건너 뛰기

iota가 사용되지 않아도 상수 목록의 모든 항목에 대해 iota 의 값이 계속 증가합니다.

const ( // iota is reset to 0
    a = 1 << iota  // a == 1
    b = 1 << iota  // b == 2
    c = 3          // c == 3  (iota is not used but still incremented)
    d = 1 << iota  // d == 8
)

상수가 전혀 생성되지 않아도 증분됩니다. 즉 빈 식별자를 사용하여 값을 완전히 건너 뛸 수 있습니다.

const (
  a = iota // a = 0
  _        // iota is incremented
  b        // b = 2
)

첫 번째 코드 블록은 Go Spec (CC-BY 3.0)에서 가져 왔습니다.

표현식 목록에서 iota 사용

iota 는 각 ConstSpec 후에 증가하기 때문에 동일한 표현식 목록 내의 값은 iota 대해 동일한 값을 갖습니다.

const (
    bit0, mask0 = 1 << iota, 1<<iota - 1  // bit0 == 1, mask0 == 0
    bit1, mask1                           // bit1 == 2, mask1 == 1
    _, _                                  // skips iota == 2
    bit3, mask3                           // bit3 == 8, mask3 == 7
)

이 예제는 Go Spec (CC-BY 3.0)에서 가져 왔습니다.

비트 마스크에 iota 사용

Iota는 비트 마스크를 만들 때 매우 유용 할 수 있습니다. 예를 들어, 보안, 인증 및 / 또는 준비가 될 수있는 네트워크 연결 상태를 나타 내기 위해 다음과 같은 비트 마스크를 만들 수 있습니다.

const (
    Secure = 1 << iota // 0b001
    Authn              // 0b010
    Ready              // 0b100
)

ConnState := Secure|Authn // 0b011: Connection is secure and authenticated, but not yet Ready

const에서 iota 사용

const 생성을위한 열거 형입니다. Go 컴파일러는 0에서 iota를 시작하고 다음 상수마다 1 씩 증가시킵니다. 값은 런타임보다는 컴파일 타임에 결정됩니다. 이 때문에 우리는 런타임에 평가되는 표현식에 iota를 적용 할 수 없습니다.

const에서 iota를 사용하는 프로그램

package main

import "fmt"

const (
    Low = 5 * iota
    Medium
    High
)

func main() {
    // Use our iota constants.
    fmt.Println(Low)
    fmt.Println(Medium)
    fmt.Println(High)
}

Go Playground 에서 사용해보기



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