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

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

Skip first element of an array in Golang

问题

我有以下的代码片段:

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

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

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

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

英文:

I have the following code segments

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

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

是的。使用以下代码:

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

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

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

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

英文:

Yes. Use this

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

Or in case you can get empty slice:

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

答案2

得分: 8

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

  1. for _, val := range Arr[1:] {
  2. // 做一些操作
  3. }
  4. // 或者
  5. for i := 1; i < len(Arr); i++ {
  6. val = Arr[i]
  7. // 做一些操作
  8. }
英文:

Use a standard for loop or the slice operator:

  1. for _, val := range Arr[1:] {
  2. // Do something
  3. }
  4. // Or
  5. for i := 1; i &lt; len(Arr); i++ {
  6. val = Arr[i]
  7. // Do something
  8. }

答案3

得分: 2

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. for _, val := range Arr[1:] {
  6. fmt.Println(val)
  7. }
  8. }

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. for i, val := range Arr {
  6. if i == 0 {
  7. continue
  8. }
  9. fmt.Println(val)
  10. }
  11. }

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

  1. package main
  2. import "fmt"
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. first := true
  6. for _, val := range Arr {
  7. if first {
  8. first = false
  9. continue
  10. }
  11. fmt.Println(val)
  12. }
  13. }
英文:

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

  1. package main
  2. import &quot;fmt&quot;
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. for _, val := range Arr[1:] {
  6. fmt.Println(val)
  7. }
  8. }

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

  1. package main
  2. import &quot;fmt&quot;
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. for i, val := range Arr {
  6. if i == 0 {
  7. continue
  8. }
  9. fmt.Println(val)
  10. }
  11. }

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

  1. package main
  2. import &quot;fmt&quot;
  3. func main() {
  4. Arr := [...]int{1, 2, 3, 4}
  5. first := true
  6. for _, val := range Arr {
  7. if first {
  8. first = false
  9. continue
  10. }
  11. fmt.Println(val)
  12. }
  13. }

答案4

得分: 0

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

  1. for i, val := range Arr {
  2. if i == 0 {
  3. // 忽略或对第一个值做一些操作
  4. } else {
  5. // 对 val 做一些操作
  6. }
  7. }
英文:

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

  1. for i, val := range Arr {
  2. if i == 0 {
  3. //Ignore or do something with first val
  4. }else{
  5. // something have to do with val
  6. }
  7. }

答案5

得分: -2

以下是要翻译的内容:

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

改为:

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

Instead use this

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

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:

确定