是否可以使用特定值初始化golang切片?

Nic*_*ler 11 go slice

是否可以在python中初始化一个像1一样的切片?

蟒蛇:

onesArray = np.ones(5)
onesList = [1]*5
Run Code Online (Sandbox Code Playgroud)

GOLANG

onesSlice := make([]int, 5)
for i:= 0; i < len(onesSlice); i++{
    onesSlice[i] = 1
}
Run Code Online (Sandbox Code Playgroud)

有可能比这更好吗?

eva*_*nal 22

是的但你必须使用不同的语法.

oneSlice := []int{1, 1, 1, 1, 1}
Run Code Online (Sandbox Code Playgroud)

它被称为'复合文字'

此外,如果有理由进行迭代(比如计算基于值的循环变量或其他东西),那么你可以使用range关键字而不是旧学校,因为i等于,i小于,i ++循环.

for i := range onesSlice {
    onesSlice[i] = 1
}
Run Code Online (Sandbox Code Playgroud)

  • 我想创建一个包含整数“val”的“n”个副本的切片。有没有比循环更简单的方法?例如,在 C++ 中我可以执行 `vector&lt;int&gt; a(n, val)`。 (34认同)
  • 从 1.16 开始,Go 中没有简单的方法。如果您可以编写例如“make_init([]int, N, INIT_VAL)”可以创建一个 N 倍 INIT_VAL 的切片(容量为 N),那就太好了。 (10认同)
  • `len(oneSlice)` == `cap(oneSlice)` (2认同)