>백엔드 개발 >Golang >golang iota를 시작하는 방법

golang iota를 시작하는 방법

(*-*)浩
(*-*)浩원래의
2019-12-03 11:01:133983검색

golang iota를 시작하는 방법

iota는 Golang 언어의 상수 카운터로, 상수 표현식에만 사용할 수 있습니다.

iota는 const 키워드가 나타나면(const 내부의 첫 번째 줄 앞) 0으로 재설정됩니다. const에서 상수 선언의 각 새 줄은 iota를 한 번씩 계산합니다 (iota는 const 문 블록 행 인덱스로 이해될 수 있습니다. ). (추천 학습: go)

iota를 사용하면 정의를 단순화할 수 있으며 열거형을 정의할 때 매우 유용합니다.

상수 정의에서 iota는 1, 0,1,2,3,4,5...의 단계로 0부터 값을 편리하게 반복할 수 있습니다.

이 예에서는 파일에서 10번입니다. size format 2 1칸 캐리를 기준으로 KB는 왼쪽으로 10비트 이동하고, MB는 왼쪽으로 20비트 이동합니다. . . 이 글의

Sprintf("%f",x)는 String 메서드에 정의되어 있으므로 무한 루프 버그를 일으키지 않습니다. %f는 String()

package main
import (
    "fmt"
)
type ByteSize float64
const (
    _ = iota
    KB ByteSize = 1 << (10*iota)
    MB
    GB
    TB
    PB
    EB
    ZB
    YB
)
func (b ByteSize) String() string{
    switch {
        case b >= YB:
            return fmt.Sprintf("%.2fYB",b/YB)
        case b >= ZB:
            return fmt.Sprintf("%.2fZB",b/ZB)
        case b >= EB:
            return fmt.Sprintf("%.2fEB",b/EB)
        case b >= PB:
            return fmt.Sprintf("%.2fPB",b/PB)
        case b >= TB:
            return fmt.Sprintf("%.2fTB",b/TB)
        case b >= GB:
            return fmt.Sprintf("%.2fGB",b/GB)
        case b >= MB:
            return fmt.Sprintf("%.2fMB",b/MB)
        case b >= KB:
            return fmt.Sprintf("%.2fKB",b/KB)

    }
    return fmt.Sprintf("%.2fB",b)
}

func main() {
    fmt.Println(ByteSize(1e10))
}
호출을 시도하지 않기 때문입니다.

위 내용은 golang iota를 시작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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