【问题标题】:Loop through slice of unknown length遍历未知长度的切片
【发布时间】:2020-12-30 05:23:42
【问题描述】:

下面是开始使用的代码示例。这个想法是我正在制作一个 API 端点,所以我不知道要解析的切片的长度。如何遍历 Golang 中长度未知的数组,以使其不会出错“索引超出范围”或崩溃?

package main

type Human struct {
  ID    int64
  Name  string
  email string
  alive bool
}

func main() {
  var human []Human

  // add the loop here
}

【问题讨论】:

  • 这是一个切片,而不是一个数组。 tour.golang.org/moretypes/16
  • @adarian 虽然切片的长度在编译时可能未知,但在运行时可以使用内置函数发现len。因此,没有什么可以阻止您使用经典的 for 循环形式,即 for i := 0; i < len(s); i++ {,而不会导致 index-out-of-bounds 错误。

标签: go


【解决方案1】:

感谢@tkausl 和@Cerise Limón

package main

import "fmt"

var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}

func main() {
    for i, v := range pow {
        fmt.Printf("2**%d = %d\n", i, v)
    }
}

【讨论】:

  • 我不明白这是如何回答这个问题的。请看看您是否可以澄清/扩展答案。
  • @CarlWinbäck 关键部分是循环右侧的“范围数组”,它返回 2 个项目(索引、值),然后您可以在循环中使用它们
猜你喜欢
  • 1970-01-01
  • 2017-02-14
  • 2013-06-25
  • 1970-01-01
  • 2014-07-06
  • 2019-08-03
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
相关资源
最近更新 更多