【发布时间】:2016-06-12 19:27:23
【问题描述】:
我有两个价值观:
[3:6]
我试图在 Golang 中玩一些东西,但我找不到根据这些值创建数组的好方法。
这是我想要达到的目标:
[3,4,5,6]
【问题讨论】:
我有两个价值观:
[3:6]
我试图在 Golang 中玩一些东西,但我找不到根据这些值创建数组的好方法。
这是我想要达到的目标:
[3,4,5,6]
【问题讨论】:
您可以使用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
}
【讨论】:
我一直在寻找类似的答案,@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
}
【讨论】: