【问题标题】:Generate array with with range of integers生成具有整数范围的数组
【发布时间】:2016-06-12 19:27:23
【问题描述】:

我有两个价值观:

[3:6]

我试图在 Golang 中玩一些东西,但我找不到根据这些值创建数组的好方法。

这是我想要达到的目标:

[3,4,5,6]

【问题讨论】:

    标签: arrays go range slice


    【解决方案1】:

    您可以使用for ... range 构造使其更紧凑,甚至更快:

    lo, hi := 3, 6
    s := make([]int, hi-lo+1)
    for i := range s {
        s[i] = i + lo
    }
    

    出于好奇,循环可以在没有循环变量的情况下实现,但它会更慢,代码也更长。通过递减hi:

    for ; hi >= lo; hi-- {
        s[hi-len(s)+1] = hi
    }
    

    或递增lo

    for ; lo <= hi; lo++ {
        s[len(s)-1-hi+lo] = lo
    }
    

    【讨论】:

      【解决方案2】:

      我一直在寻找类似的答案,@icza 的答案是一个很好的开始。我最终根据 icza 的回答创建了一个辅助函数:

      func createNumbers(lo int, hi int) []int {
          s := make([]int, hi-lo+1)
      
          for i:= range s {
              s[i] = i + lo
          }
      
          return s
      }
      

      【讨论】:

        猜你喜欢
        • 2018-10-20
        • 2023-03-04
        • 1970-01-01
        • 2019-08-06
        • 2021-07-20
        • 2013-12-14
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        相关资源
        最近更新 更多