gpt4 book ai didi

arrays - 如何在 Go 中不使用 for 循环来初始化数组?

转载 作者:IT王子 更新时间:2023-10-29 00:36:17 24 4
gpt4 key购买 nike

我有一个 bool 值数组 A,由整数 0n 索引,所有初始设置为 true.

我目前的实现是:

for i := 0; i < n; i++ {
A[i] = true
}

最佳答案

使用for 循环是最简单的解决方案。创建数组或 slice 将始终返回一个归零值。在 bool 的情况下,这意味着所有值都将为 false(bool 类型的零值)。

请注意,使用 Composite literal您可以创建和初始化 slice 或数组,但不会更短:

b1 := []bool{true, true, true}
b2 := [3]bool{true, true, true}

如果您不想使用 for 循环,您可以通过为值 true 引入常量来使其更短一些:

const T = true
b3 := []bool{T, T, T}

如果 n 很大,for 是最简单的解决方案。

或者您可以切换应用程序的逻辑,并使用数组或 slice 将取反的值存储在 slice 中,这样“全假” 零值将是一个很好的选择初始值。我的意思是,如果您的 slice 要存储文件是否存在,您可以更改逻辑以便 slice 存储文件是否丢失:

presents := []bool{true, true, true, true, true, true}

// Is equivalent to:

missings := make([]bool, 6) // All false
// missing=false means not missing, means present)

另请注意,用特定值填充数组或 slice 称为“memset”操作。 Go 对此没有内置函数,但要获得有效的解决方案,请参阅以下问题:

Is there analog of memset in go?

关于arrays - 如何在 Go 中不使用 for 循环来初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32785319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com