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

时间:2015-09-25 15:11:49

标签: arrays go initialization slice

我有一个布尔值的数组int,由整数A索引到0,所有这些都初始设置为n

我目前的实施是:

true

2 个答案:

答案 0 :(得分:9)

使用for循环是最简单的解决方案。创建数组或切片将始终返回零值。如果bool,则表示所有值均为false(类型bool的零值)。

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

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

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

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

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

或者您可以切换应用程序的逻辑,并使用数组或切片在切片中存储否定值,这样" all-false" 为零价值将是一个很好的初始值。我的意思是,如果你的切片要存储文件存在,你可以更改逻辑,以便切片存储文件是否缺失

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

// Is equivalent to:

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

另请注意,填充具有特定值的数组或切片称为" memset"操作。 Go没有内置函数,但是对于有效的解决方案,请看这个问题:

Is there analog of memset in go?

答案 1 :(得分:0)

使用范围函数进行初始化,而不知道数组中元素的数量。

myDataTable.Rows[12]["ID"].Value