arrays - 为什么我的阵列没有增长?
问题描述
我正在尝试生成因数为 3 的数字 || 5个数组。
这是我的代码的副本:
package main
import "fmt"
func main() {
i := 0
for i < 1000 {
var nums []int
if i%3 == 0 || i%5 == 0 {
nums := append(nums, i)
fmt.Println(nums)
}
i++
}
}
不幸的是,这并没有按计划进行,因为它在 nums[0] 处重写了值。这是我的终端输出的最后几个值。
[981]
[984]
[985]
[987]
[990]
[993]
[995]
[996]
[999]
我究竟做错了什么?
更新
也试过这个:
var nums []int // initialize the slice outside for loop
for i < 1000 {
if i%3 == 0 || i%5 == 0 {
nums = append(nums, i) // append to the slice outside loop not create a new one using short variable declaration
fmt.Println(nums)
}
i++
}
但是得到了相同的结果
解决方案
这是因为您正在创建[]int
切片的新变量,而不是在 if 条件之外附加到创建的变量。在 for 循环外创建[]int
切片,不要在 if 条件内使用短声明创建新变量。
package main
import (
"fmt"
)
func main() {
i := 0
var nums []int
for i < 1000 {
if i%3 == 0 || i%5 == 0 {
nums = append(nums, i)
}
i++
}
fmt.Println(nums)
fmt.Println(len(nums), cap(nums)) // check for length and capacity of slice to know the size of slice after appending all data
}
Go 操场上的工作代码
推荐阅读
- android-animation - Lottie 文件没有加载到 jetpack compose 的惰性列中?
- java - 如何压缩此列表
l = [14, 0, -31, 16, 68, 69, 86, 69, 76, 79, 80, 69, 82, 32] 颤动? - azure-functions - 有没有办法找到 Zombie Azure Storage?
- hadoop - 在 Sqoop 增量作业中使用 last-modified 和 last-value
- css - SVG 动画从左上到右下
- python - Django中的瑞典银行ID QR码服务器/客户端交互
- python - Python将编码字符串转换为utf8?
- twilio - 通过预检的 twilio 连接错误原因
- azure - 将机密与 Azure 函数绑定一起使用
- javascript - 在 magento2 中加载 jquery cropzee 函数时出现问题