首頁  >  文章  >  後端開發  >  如何在不使用 for 迴圈的情況下有效地初始化 Go 中的布林數組?

如何在不使用 for 迴圈的情況下有效地初始化 Go 中的布林數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 18:39:02472瀏覽

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

在 Go 中不使用 For 循環高效初始化布林數組

在 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 函數。但是,您可以建立自己的高效實作來用特定值填滿陣列或切片。

以上是如何在不使用 for 迴圈的情況下有效地初始化 Go 中的布林數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn