执行:使用现有数组的类型和值定义多维数组?

是否可以a)定义b)使用现有数组初始化新的多维数组,如下面的代码所示 var b [2] [3] int </ code>的意思,只是说类似 var b [2] a </ code>吗?

使用a的类型是什么,而不是硬编码 </ p>

 包主程序? 
也许还要处理初始化=同时复制值?

  package main  

func main(){
a:= [...] int {4,5,6}
var b [2] [3] int
b [0],b [1] = a,a

}
</ code> </ pre>

(我知道切片的简便性,但是这个问题是关于理解数组的。)</ p>

< p>编辑:不敢相信我忘记了 var b [2] [len(a)] int </ code>,这是初学者的大脑冻结。 一个答案是 var b = [2] [len(a)] int {a,a} </ code>。 是类型转换,对吧?</ p>
</ div>

展开原文

原文

Is it possible to a)define b)initialize a new multidimensional array using an existing array, like in following code instead of var b [2][3]int, just saying something like var b [2]a ?
Using a's type whatever it is, instead of hardcoding it (which misses the point of using [...] for a).
And perhaps handling initialization=copying of values at the same time?

package main

func main () {
        a := [...]int{4,5,6}
        var b [2][3]int
        b[0],b[1] = a,a 
}

(I'm aware of ease and convenience of slices, but this question is about understanding arrays.)

Edit: can't believe I forgot about var b [2][len(a)]int, beginner's brain freeze. One line answer would be var b = [2][len(a)]int{a,a} . That's a type conversion, right?

dousha1394
dousha1394 模板,因为它们可以支持任何类型
接近 8 年之前 回复

1个回答



以下代码也将起作用。 您的示例和我的示例都执行相同的操作,并且两者都不应该比其他示例快得多。</ p>

除非您使用reflect来创建 [3]的一个切片(而非数组) int </ code>,则不可能在新类型中不重复 [3] int </ code>。 即使在当前版本中也不可行。 </ b>

 包main 

import“ fmt”

func main(){
a:= [.. 。] int {4,5,6}
var b = [2] [3] int {a,a}
fmt.Println(b)
}
</ code> </ pre>
</ DIV>

展开原文

原文

The following code would also work. Both your example and mine do the same thing and neither should be much faster than the other.

Unless you use reflect to make a slice (not array) of your [3]int, it is impossible to not repeat [3]int in your new type. Even that is not possible in the current release. It is in tip and will be released in Go 1.1.

package main

import "fmt"

func main() {
    a := [...]int{4,5,6}
    var b = [2][3]int{a, a}
    fmt.Println(b)
}

dtoqa66028
dtoqa66028 是的,len(array)是一个常量表达式(在编译时计算),因此可以在定义其他数组类型时使用。
接近 8 年之前 回复
douyou1857
douyou1857 谢谢! 我也似乎有一个初学者的大脑冻结,因为var b [2] [len(a)] int似乎工作得很好。
接近 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐