以惯用方式返回向量的长度
我正在编写一个返回可变长度数字序列的函数:
func fib(n int) ??? {
retval := ???
a, b := 0, 1
for ; n > 0; n-- {
??? // append a onto retval here
c := a + b
a = b
b = c
}
}
可以看出,返回序列的最终长度将为n
。 fib
应该如何返回以及返回什么来实现惯用的 Go?如果事先不知道长度,返回值和用法会有什么不同?如何将值插入到 retval
中?
I'm writing a function that returns a sequence of numbers of variable length:
func fib(n int) ??? {
retval := ???
a, b := 0, 1
for ; n > 0; n-- {
??? // append a onto retval here
c := a + b
a = b
b = c
}
}
It can be observed that the final length of the returned sequence will be n
. How and what should fib
return to achieve idiomatic Go? If the length was not known in advance, how would the return value, and usage differ? How do I insert values into retval
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在这里,我们知道有多少个数字;我们想要 n 个斐波那契数。
输出: 7 [0 1 1 2 3 5 8]
这里,我们不知道有多少个数字;我们想要所有小于或等于 n 的斐波那契数。
输出:10 [0 1 1 2 3 5 8 13 21 34]
您还可以使用 IntVector 来自 Go 向量包。请注意,
类型为 IntVector []int
。Here, we know how many numbers; we want n Fibonacci numbers.
Output: 7 [0 1 1 2 3 5 8]
Here, we don't know how many numbers; we want all the Fibonacci numbers less than or equal to n.
Output: 10 [0 1 1 2 3 5 8 13 21 34]
You could also use IntVector from the Go vector package. Note that
type IntVector []int
.不要使用向量,使用切片。 以下是各种向量操作到惯用切片操作的一些映射。
Don't use Vectors, use slices. Here are some mapping of various vector operations to idiomatic slice operations.