在Golang中跳过数组的第一个元素。

huangapple go评论89阅读模式
英文:

Skip first element of an array in Golang

问题

我有以下的代码片段:

for _, val := range Arr {
    // 与 val 相关的操作
}

Arr 中,可能有多个元素。我想跳过 Arr 的第一个元素,并从第二个元素开始继续循环。

例如,如果 Arr 包含 {1,2,3,4}。我只想取 {2,3,4}。

有没有办法在 range 查询中实现这个功能?

英文:

I have the following code segments

for _, val := range Arr {
	// something have to do with val
}

In Arr , there might be more than 1 elements. I want to skip the first element of Arr and continue the loop from the second element.

For example if Arr contains {1,2,3,4}. With the query I just want to take {2,3,4}.

Is there a way to do that with the range query ?

答案1

得分: 51

是的。使用以下代码:

for _, val := range Arr[1:] {
    // 对 val 进行操作
}

或者,如果你可能得到一个空切片:

for i := 1; i < len(Arr); i++ {
    // 对 Arr[i] 进行操作
}

这样可以遍历切片 Arr 中的元素,并对每个元素进行操作。第一种方式使用了 Go 语言的 range 语法,从索引为 1 的元素开始遍历。第二种方式使用了传统的 for 循环,从索引为 1 的元素开始遍历。

英文:

Yes. Use this

for _, val := range Arr[1:] {
// something to do with val
}

Or in case you can get empty slice:

for i := 1; i &lt; len(Arr); i++ {
// something to do with Arr[i]
}

答案2

得分: 8

使用标准的for循环或切片操作符:

for _, val := range Arr[1:] {
    // 做一些操作
}

// 或者
for i := 1; i < len(Arr); i++ {
    val = Arr[i]
    // 做一些操作
}
英文:

Use a standard for loop or the slice operator:

for _, val := range Arr[1:] {
    // Do something
}

// Or
for i := 1; i &lt; len(Arr); i++ {
    val = Arr[i]
    // Do something
}

答案3

得分: 2

将代码翻译为切片后跳过第一个元素(使用范围查询):

package main

import "fmt"

func main() {
    Arr := [...]int{1, 2, 3, 4}
    for _, val := range Arr[1:] {
        fmt.Println(val)
    }
}

使用索引跳过第一个元素(使用范围查询):

package main

import "fmt"

func main() {
    Arr := [...]int{1, 2, 3, 4}
    for i, val := range Arr {
        if i == 0 {
            continue
        }
        fmt.Println(val)
    }
}

使用一个布尔变量跳过第一个元素(使用范围查询):

package main

import "fmt"

func main() {
    Arr := [...]int{1, 2, 3, 4}
    first := true
    for _, val := range Arr {
        if first {
            first = false
            continue
        }
        fmt.Println(val)
    }
}
英文:

convert to slice then skip first element(with the range query):

package main

import &quot;fmt&quot;

func main() {
	Arr := [...]int{1, 2, 3, 4}
	for _, val := range Arr[1:] {
		fmt.Println(val)
	}
}

using index to skip first element(with the range query):

package main

import &quot;fmt&quot;

func main() {
	Arr := [...]int{1, 2, 3, 4}
	for i, val := range Arr {
		if i == 0 {
			continue
		}
		fmt.Println(val)
	}
}

using one bool var to skip first element(with the range query):

package main

import &quot;fmt&quot;

func main() {
	Arr := [...]int{1, 2, 3, 4}
	first := true
	for _, val := range Arr {
		if first {
			first = false
			continue
		}
		fmt.Println(val)
	}
}

答案4

得分: 0

如果你想对第一个值做一些不同的操作,你可以这样做:

for i, val := range Arr {
   if i == 0 {
       // 忽略或对第一个值做一些操作
   } else {
       // 对 val 做一些操作
   }
}
英文:

In case you what to do something different with the first value, you can do this:

for i, val := range Arr {
   if i == 0 {
       //Ignore or do something with first val   
   }else{
       // something have to do with val
   }
}

答案5

得分: -2

以下是要翻译的内容:

for _, val := range Arr[len(Arr)-(len(Arr)-1):] {
    // something have to do with val
}

改为:

for _, val := range Arr[1:] {
    // something have to do with val
}
英文:
for _, val := range Arr[len(Arr)-(len(Arr)-1):] {
    // something have to do with val
}

Instead use this

for _, val := range Arr[1:] {
    // something have to do with val
}

huangapple
  • 本文由 发表于 2016年5月25日 14:23:01
  • 转载请务必保留本文链接:https://go.coder-hub.com/37429248.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定