首頁  >  文章  >  後端開發  >  如何在沒有循環的情況下初始化 Go 中的布林數組?

如何在沒有循環的情況下初始化 Go 中的布林數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 08:53:02620瀏覽

How Can I Initialize Boolean Arrays in Go Without Loops?

在Go 中建立布林數組:For 循環的替代方案

在Go 中使用布林數組時,初始化它們可能是一項常見任務。傳統方法涉及使用 for 迴圈來單獨設定每個元素。但是,還有其他方法可以在不訴諸循環的情況下實現此初始化。

建立零值數組

一個簡單的解決方案是完全避免使用 for 迴圈。 Go 中的陣列預設初始化為零值。對於布林數組,這意味著所有元素都將設定為 false。因此,您可以簡單地聲明所需大小的數組,並且它將在所有元素設定為false 的情況下進行初始化:

<code class="go">A := [n]bool{false, false, ..., false}</code>

使用複合文字

複合文字提供了一種建立和初始化陣列或切片的簡潔方法。雖然它們通常比for 循環需要更多的輸入,但它們仍然可以提供方便的解決方案:

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

使用常量縮短初始化

如果您經常使用以下方式初始化陣列相同的值,引入常數可以簡化流程:

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

替代邏輯:儲存負值

不要在陣列中儲存正值,而是考慮儲存否定值。這允許您用零值(全部為false)來初始化數組,並將false 解釋為「不存在」或「不缺失」:

<code class="go">missings := make([]bool, 6) // All false
// missing=false means not missing, means present</code>

大型數組的最佳化初始化

對於大型數組,最有效的初始化技術是透過「memset」操作。雖然 Go 缺乏內建的 memset 函數,但以下問題提供了高效的解決方案:

[Go 中是否有類似的 memset? ](https://stackoverflow.com/questions/21376450/is -there-analog-of-memset-in-go)

以上是如何在沒有循環的情況下初始化 Go 中的布林數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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