Go でループを使わずに配列を効率的に初期化するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-30 23:53:29
オリジナル
634 人が閲覧しました

How Can You Initialize an Array in Go Efficiently Without Loops?

ループを使用しない Go での効率的な配列の初期化

均一な値による配列の初期化は、従来の for ループを使用して行うことができます。ただし、大規模な配列の場合、このアプローチは非効率的になります。この記事では、ループを使用せずに配列を初期化する代替方法について説明します。

従来のアプローチ

従来の方法では、for ループを使用して配列の要素を反復処理し、各要素を目的の値に設定します。

<code class="go">var A [n]bool
for i := 0; i < n; i++ {
    A[i] = true
}</code>
ログイン後にコピー

代替アプローチ

  • 複合リテラル:
    複合リテラルでは、スライスまたは配列の作成と初期化が行われますが、従来のアプローチよりも短くはありません。
<code class="go">b1 := []bool{true, true, true}
b2 := [3]bool{true, true, true}</code>
ログイン後にコピー
  • True Value の定数:
    定数の導入true 値の場合、コード長をわずかに短縮できます。
<code class="go">const T = true
b3 := []bool{T, T, T}</code>
ログイン後にコピー
  • 否定値ストレージ:
    アプリケーション ロジックによっては、より効率的になる場合があります。代わりに否定された値を保存します。このようにして、すべて偽のゼロ値が適切な初期化になります。
<code class="go">presents := []bool{true, true, true, true, true, true}

// Is equivalent to:

missings := make([]bool, 6) // All false
// missings=false means not missing (i.e., present)</code>
ログイン後にコピー
  • Memset 操作:
    配列に特定の値を埋めることが参照されます。 「memset」操作として。 Go はこのための組み込み関数を提供していませんが、効率的な解決策は他のソースで見つけることができます。

以上がGo でループを使わずに配列を効率的に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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