>  기사  >  백엔드 개발  >  Go에서 연속 정수를 상수에 할당할 때 Iota 값을 건너뛸 수 있나요?

Go에서 연속 정수를 상수에 할당할 때 Iota 값을 건너뛸 수 있나요?

DDD
DDD원래의
2024-11-22 05:54:14891검색

How Can I Skip Iota Values When Assigning Sequential Integers to Constants in Go?

Go에서 Iota를 사용하여 상수 값 건너뛰기

Go에서 iota는 순차 정수를 열거된 상수에 할당하는 데 사용되는 특수 상수입니다. 끊임없는 그룹. 그러나 특정 상수에 iota 값을 할당하는 것을 건너뛰어야 하는 경우가 있습니다. 다음은 세 가지 접근 방식입니다.

단일 그룹, 수동 오프셋

상수가 동일한 그룹 내에 있는 경우 상수를 사용하여 Iota를 수동으로 이동하여 그대로 둘 수 있습니다. 건너뛰려는 상수에 대한 빈 초기화 표현식:

const (
    APPLE = iota
    ORANGE
    PEAR
    BANANA = iota + 96 // 96 is added manually to get 99
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)

이 접근 방식은 원하는 출력을 생성합니다. 0, 1, 2, 99, 100. 그러나 BANANA 앞에 순서를 바꾸거나 새로운 상수를 삽입하면 BANANA 및 그 이후의 상수 값에 영향을 미칩니다.

상수군 나누기

예기치 않은 값 변경을 방지하려면 상수 그룹을 끊고 새 그룹을 시작하세요. one:

const (
    APPLE = iota
    ORANGE
    PEAR
)

const (
    BANANA = iota + 99 // Iota resets to 0
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)

이 역시 동일한 출력을 생성하며 BANANA 앞에 새 상수를 삽입해도 BANANA 및 후속 상수의 값에는 영향을 미치지 않습니다.

단일 그룹, 자동 오프셋

값을 건너뛰는 동안 단일 상수 그룹을 유지하려면 중단 위치에 상수를 도입하세요. 다음 줄의 iota에서 해당 값을 빼야 합니다.

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK

    BANANA = iota - _BREAK + 98 // Continues from 98 + 1 = 99
    GRAPE
)
fmt.Println(APPLE, ORANGE, PEAR, BANANA, GRAPE)

이 접근 방식을 사용하면 BANANA 앞에 순서를 변경하거나 새 상수를 삽입해도 BANANA 및 후속 상수의 값에 영향을 미치지 않습니다. 오프셋 계산을 단순화하기 위해 _break를 iota 1로 초기화할 수 있으므로 다음 상수에 적용할 오프셋은 _break 자체의 값입니다.

const (
    APPLE = iota
    ORANGE
    PEAR

    _BREAK = iota + 1

    BANANA = iota - _BREAK + 99 // Continues from 99
    GRAPE
)

위 내용은 Go에서 연속 정수를 상수에 할당할 때 Iota 값을 건너뛸 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.