Matrix 如何在golang中找到(2,3)维切片的维数并验证其是否为矩阵?

Matrix 如何在golang中找到(2,3)维切片的维数并验证其是否为矩阵?,matrix,go,Matrix,Go,例如:[]float64{{11,5,14,1},{11,5,14,1}具有维度[2,4] 如果将其传递给函数,那么在此处查找维度的最有效方法是什么 感谢外部维度就是len(x)其中x是传递给函数的切片(示例[]]float64{{{11,5,14,1},{11,5,14,1})。 但是,内部尺寸不能保证相等,因此您必须检查每个元素并检查它们有什么 如果您保证x的每个元素具有相同数量的元素,只需查找len(x[0])Iflen(x)>0Go仅提供一维数组和切片。N维数组可以通过使用数组的数组来模

例如:
[]float64{{11,5,14,1},{11,5,14,1}
具有维度
[2,4]

如果将其传递给函数,那么在此处查找维度的最有效方法是什么


感谢

外部维度就是
len(x)
其中
x
是传递给函数的切片(示例
[]]float64{{{11,5,14,1},{11,5,14,1}
)。 但是,内部尺寸不能保证相等,因此您必须检查每个元素并检查它们有什么


如果您保证
x
的每个元素具有相同数量的元素,只需查找
len(x[0])
If
len(x)>0
Go仅提供一维数组和切片。N维数组可以通过使用数组的数组来模拟,这与您正在做的非常接近——您有一个一维切片,其中包含2个一维切片

这是有问题的,因为切片没有定义的长度。因此,你可能会得到不同长度的切片:

[][]float64{
    {1, 2, 3, 4},
    {5, 6, 7, 8, 9, 10},
}
如果使用实际数组,则更简单,因为数组具有固定长度:

[2][4]64

您可以根据需要将其扩展到任意多个维度:

[2][4][8]float64
提供了三个维度,其深度分别为2、4和8

然后,您可以通过在任何元素上使用内置的
len()
函数来判断每个维度的容量:

foo := [2][4][7]float64{}
x := len(foo)       // x == 2
y := len(foo[0])    // y == 4
z := len(foo[0][0]) // z == 8

我知道。我更关心的是一个n维的例子。@ArafatK同样的推理也适用于任意数量的维。从数学意义上讲,切片(切片…)不是矩阵。内部切片的长度可以不同;它们甚至可以改变。我猜你是以不同的方式引用语义的。我对golang很陌生,但在其他语言中,维度[2,4]似乎还不错