ホームページ >バックエンド開発 >Golang >Go で for ループを使用せずにブール配列を効率的に初期化するにはどうすればよいでしょうか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 18:39:02568ブラウズ

How can you efficiently initialize boolean arrays in Go without using for loops?

For ループを使用せずに Go でブール配列を効率的に初期化する

Go では、ブール配列の初期化をさまざまな方法で行うことができます。最も簡単なアプローチには、次の例のように for ループを使用する方法があります。

<code class="go">for i := 0; i < n; i++ {
    A[i] = true
}</code>

ただし、for ループの必要性を排除できる代替方法もあります。

ゼロ埋めの配列/スライスの作成

デフォルトでは、Go の配列とスライスはゼロ値で初期化されます。ブール値の場合、ゼロ値は false です。したがって、要素を初期化せずに配列またはスライスを作成すると、すべての値が false に設定されます。

<code class="go">b1 := []bool{false, false, false}
b2 := [3]bool{false, false, false}</code>

定数値を持つ複合リテラル

複合リテラルは、特定の値を使用して配列またはスライスを作成および初期化するために使用されます。ただし、複合リテラルを使用しても、for ループを使用する場合に比べて大幅な改善は得られません。

<code class="go">b1 := []bool{true, true, true}
b2 := [3]bool{true, true, true}</code>

初期化を省略するには、値 true の定数を導入できます。

<code class="go">const T = true
b3 := []bool{T, T, T}</code>

代替戦略

大規模なブール配列の初期化の効率が懸念される場合は、考慮すべき代替戦略があります。

  • 否定値アプローチ: ファイルが存在するかどうかを保存するのではなく、ファイルが欠落しているかどうかを保存します。このように、ゼロで初期化されたブール値のスライスはデフォルトの状態を正確に反映します。
  • カスタム memset 関数: Go には組み込みの memset 関数がありません。ただし、配列またはスライスに特定の値を入力するための独自の効率的な実装を作成できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。