我是GO的新手,我想知道是否可以在GO中动态创建变量?
我在下面提供了一个伪代码来说明我的意思。我将新创建的变量存储在切片中:
func method() {
slice := make([]type)
for(i=0;i<10;i++)
{
var variable+i=i;
slice := append(slice, variablei)
}
}
在循环结束时,切片应包含变量:variable1,variable2 ... variable9
感谢您的帮助!!
答案 0 :(得分:11)
Go没有动态变量。 大多数语言中的动态变量都实现为Map(Hashtable)。
因此,您可以在代码中使用以下地图之一来执行您想要的操作
var m1 map[string]int
var m2 map[string]string
var m3 map[string]interface{}
这是Go代码,它可以完成您的工作
http://play.golang.org/p/d4aKTi1OB0
package main
import "fmt"
func method() []int {
var slice []int
for i := 0; i < 10; i++ {
m1 := map[string]int{}
key := fmt.Sprintf("variable%d", i)
m1[key] = i
slice = append(slice, m1[key])
}
return slice
}
func main() {
fmt.Println(method())
}
答案 1 :(得分:3)
没有;如果你在编译时不知道它们的名字,就不能引用局部变量。
如果你需要额外的间接,你可以使用指针代替它。
func function() {
slice := []*int{}
for i := 0; i < 10; i++ {
variable := i
slice = append(slice, &variable)
}
// slice now contains ten pointers to integers
}
另请注意,for循环中的括号应该省略,并且将开括号放在新行上是由于++
之后自动分号插入导致的语法错误。 make
切片要求您传递一个长度,因此我不使用它,因为无论如何都使用了append
。