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 サイトの他の関連記事を参照してください。