我有一个相当简单的问题,但却找不到答案。我正在遍历一系列切片,如下所示:
for index, arg := range os.Args[1:] {
s += fmt.Sprintf("%d: %s", index, arg)
}
据我理解,range
遍历一个切片,而index
是从range
创建出来的,并且它是从零开始计数的。 我得到了以下输出:
0: argument_1
1: argument_2
// etc.
但这并不是我期望的 - 我需要 range
保留该切片的索引,以便我的输出看起来像这样:
1: argument_1
2: argument_2
// etc.
最常见的实现方法是在循环中添加
shift
索引:shift := 1
for index, arg := range os.Args[shift:] {
index += shift
s += fmt.Sprintf("%d: %s", index, arg)
}
但是我想知道,有没有更符合"Go语言风格"的方法来做这件事情?同时,在Go语言中如何保留索引来创建切片?
shift
示例中,除了for循环的常规增量之外,每次还将索引加1。这不会导致只读取参数1、3、5等吗? - Matei RaduoriginalIndex := index + 1
,可能会更好看些。 - Franck Jeanninrange
如何工作的疑惑。 - Matei Radu