如何在Go中声明一个数组(或等效的)

huangapple go评论94阅读模式
英文:

How do I declare an array(or equivalent) in Go

问题

我想做类似这样的事情(它是有效的)

var myArray [9][3]int

但是当我这样做时

var myArray [someIntVariable][anotherOne]int

它不能使用(我知道为什么,所以我不在问这个。)
但是有没有其他方法可以使这个工作?

对不起,我的英语不好。

英文:

I want to do something like(it's valid)

var myArray [9][3]int

but when I do

var myArray [someIntVariable][anotherOne]int

It can't be used(I know why, so I'm not asking this.)
But is there any alternative to make this work?

Sorry for my bad English.

答案1

得分: 5

以下是翻译好的部分:

你对以下代码是否有效?

func make2dArray(m, n int) [][]int { 
   myArray := make([][]int, m) 
   for i := range myArray { 
      myArray[i] = make([]int, n) 
   } 
   return myArray 
} 

var myArray := make2dArray(someIntVariable, anotherOne)
英文:

Does the following work for you?

func make2dArray(m, n int) [][]int { 
   myArray := make([][]int, m) 
   for i := range myArray { 
      myArray[i] = make([]int, n) 
   } 
   return myArray 
} 

var myArray := make2dArray(someIntVariable, anotherOne)

答案2

得分: 1

在Go语言中,“array”类型包括长度作为类型的一部分,因此它们只适用于在编译时长度固定的情况(类似于C语言中的“数组”在C99之前的情况)。如果你想要长度只在运行时确定的“数组”(例如Java中的数组),你真正想要的是一个“切片”。mepcotterell的答案向你展示了如何创建一个切片的切片。

英文:

"array" types in Go include the length as part of the type, so they are only good for things where the length is fixed at compile time (similar to "arrays" in C before C99). If you want "arrays" whose length is determined only at runtime (e.g. arrays in Java), what you really want is a "slice". mepcotterell's answer shows you how to create a slice of slices.

答案3

得分: 0

你也可能对一个通用的矩阵包感兴趣:

>gomatrix

英文:

You can also be interested in a generic matrix package:

>gomatrix

huangapple
  • 本文由 发表于 2011年6月22日 21:22:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/6440585.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定