ホームページ > バックエンド開発 > Golang > Go で 1000 の累乗を定数としてコンパクトに定義するにはどうすればよいでしょうか?

Go で 1000 の累乗を定数としてコンパクトに定義するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-11-25 03:09:13
オリジナル
1063 人が閲覧しました

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

10 の累乗を定数としてコンパクトに表現する方法

Go プログラミング言語では、定数の概念が強力な関数として iota とともに導入されています。コンパクトで読みやすい定数値を生成するメカニズム。この本の演習 3.13 では、1000 のべき乗 (KB、MB など) を表す定数を簡潔に定義するよう読者に求めています。

この演習では、iota を含む高度な解決策が必要であるように見えるかもしれませんが、著者はこのアプローチが次のことであると明示しています。 Go にはべき乗がないため、これは実現できません。代わりに、読者が「できるだけコンパクトな」ソリューションを検討することを奨励しています。

浮動小数点リテラルのアプローチ

コンパクトなアプローチの 1 つは、指数を伴う浮動小数点リテラルを利用することです。一部。たとえば、定数 1e3 は値 1000 を表し、後続の各定数は 1000 を掛けるか、指数に 3 を加算するだけで取得できます。このメソッドの結果は、次の 1 行の宣言になります (スペースを除く):

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 をルーン定数に割り当てることができます。 Unicode では、コード ポイント 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート