问:在golang中,有没有一种方法可以定义一个函数,该函数接受任意长度的数组作为参数?
例如。,
我知道在golang中,数组长度是变量类型的一部分,因此以下函数不会接受一个任意数组作为输入
该函数不会使用
同样,以下接受切片参数的函数不接受数组作为参数(不同类型,如预期的那样):
即
问题是,是否有一种方法可以定义一个接受任意长度数组的函数(数组,不是切片)?对于一种语言施加此约束似乎很奇怪,并且有一定的限制。
这个问题与动机无关,但在我看来,背后的原因如下。我有一组函数,将
我注意到它们的GOB序列化(MB / s)比我拥有的其他数据结构慢10倍。我想这可能与片中的取消引用操作链有关。从切片到数组-即定义
问候
附言:我现在提醒Go,"按值"传递/使用事物,使用数组可能会过高,因为golang将复制它们很多次。我想我会继续学习,并会尝试了解一下GOB的内部原理。
那没有。 Go不支持泛型。
唯一的方法是使用
Go中的数组是"次要的"。 解决方案是根据需要使用切片。
这里要注意的一件事是,您可以继续使用数组,并且仅在要将它们传递给此函数时才对其进行切片,例如:
上面的输出(在Go Playground上尝试):