> 백엔드 개발 > Golang > Go에서 1000의 거듭제곱을 상수로 어떻게 간결하게 정의할 수 있나요?

Go에서 1000의 거듭제곱을 상수로 어떻게 간결하게 정의할 수 있나요?

Patricia Arquette
풀어 주다: 2024-11-25 03:09:13
원래의
1074명이 탐색했습니다.

How Can We Compactly Define Powers of 1000 as Constants in Go?

10의 거듭제곱을 상수로 간결하게 표현하는 방법

Go 프로그래밍 언어에서는 상수의 개념이 iota와 함께 도입되었습니다. 간결하고 읽기 쉬운 상수 값을 생성하는 메커니즘. 책의 연습 3.13에서는 독자들이 1000의 거듭제곱(KB, MB 등)을 나타내는 상수를 간결하게 정의하도록 요구합니다.

연습에서는 iota와 관련된 정교한 솔루션이 필요한 것처럼 보일 수 있지만 저자는 이 접근 방식을 명시적으로 명시합니다. Go에서는 지수 연산이 부족하여 실현 가능하지 않습니다. 대신 독자들이 "간단한" 솔루션을 탐색하도록 권장합니다.

부동 소수점 리터럴 접근 방식

한 가지 간결한 접근 방식은 지수와 함께 부동 소수점 리터럴을 활용하는 것입니다. 부분. 예를 들어, 상수 1e3은 값 1000을 나타내며, 이후의 각 상수는 1000을 곱하거나 단순히 지수에 3을 더하여 얻을 수 있습니다. 이 방법을 사용하면 다음과 같은 한 줄 선언이 생성됩니다(공백 제외).

const ( KB, MB, GB, TB, PB, EB, ZB, YB = 1e3, 1e6, 1e9, 1e12, 1e15, 1e18, 1e21, 1e24 )
로그인 후 복사

정수 리터럴 접근 방식

또는 형식이 지정되지 않은 정수 상수의 경우 다음을 곱할 수 있습니다. 그러나 대신 이전 상수를 승수로 활용하여 공간을 절약할 수 있습니다. 예를 들어 MB는 KB 1000 또는 간단히 KB KB로 정의할 수 있습니다.

const (KB, MB, GB, TB, PB, EB, ZB, YB = 1000, KB*KB, MB*KB, GB*KB, TB*GB, PB*KB, EB*KB, ZB*KB)
로그인 후 복사

추가 상수 도입

이 솔루션은 다음과 같습니다. 1000을 나타내는 추가 상수 x를 도입하여 더욱 개선했습니다. x를 승수로 사용하여 3을 절약합니다.

const (x, KB, MB, GB, TB, PB, EB, ZB, YB = 1000, x, x*x, MB*x, GB*x, TB*GB, PB*x, EB*x, ZB*x)
로그인 후 복사

룬 리터럴 접근 방식

마지막으로 최대한 간결하게 하기 위해 룬 상수에 값 1000을 할당할 수 있습니다. 유니코드에서 코드 포인트 1000은 'x'보다 1자 짧은 'Ϩ' 문자를 나타냅니다.

const (x, KB, MB, GB, TB, PB, EB, ZB, YB = 'Ϩ', x, x*x, MB*x, GB*x, TB*GB, PB*x, EB*x, ZB*x)
로그인 후 복사

위 내용은 Go에서 1000의 거듭제곱을 상수로 어떻게 간결하게 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿