【发布时间】:2022-01-22 05:08:18
【问题描述】:
我试图让Struct 在停止之前只循环十次。我的Struct 看起来像
type Book struct {
Id string
Title string
}
循环遍历整个事情的代码是
var books []Book;
for _, book := range books {
fmt.Println(book.Id + " " + book.Title);
}
我尝试使用单独的 for 循环,该循环将执行 10 次,但它只循环了整个 Struct 十次或执行了 Struct 的一部分十次。
【问题讨论】:
-
呈现的代码会循环遍历
books中的所有值,所以如果有10本书,它将循环10次。请创建一个minimal reproducible example,准确显示您要解决的问题。 -
结构中目前有 17 项。如果不基本上将整个程序粘贴进去,我就无法重新创建示例。
-
结构中的字段数与循环一系列这些结构值无关。 “最小可重现示例”并不意味着您的代码的精确副本,只是解释问题所需的最小部分。
-
我认为问题出在术语上。在该示例中,没有迭代
struct,但迭代了structs 的一部分。我可以想象 OP 想要限制要迭代的切片中的元素数量;可能只考虑切片的 N 个第一个元素来限制迭代。 -
如果我没记错的话,最简单的就是使用subslicing:
for b := range books[:10] { ...
标签: loops for-loop go struct for-range