为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
杨__羊羊 2021-11-08 18:30:09
我有一个A布尔值数组,由整数索引0到n,所有初始设置为true。我目前的实现是:for i := 0; i < n; i++ {    A[i] = true}
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

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


请注意,使用复合文字您可以创建和初始化切片或数组,但这不会更短:


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

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

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


const T = true

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

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


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


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”操作。


查看完整回答
反对 回复 2021-11-08
?
炎炎设计

TA贡献1808条经验 获得超4个赞

在不知道数组元素个数的情况下,使用 range 函数进行初始化。

for i,_:=range(A){A[i] = true}


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信