Go 如何动态调用变量?

Go 如何动态调用变量?,go,Go,我有两个变量: somethingA := 123 somethingB := 456 这两个变量通过系统填充,假设您有第三个变量: type := "A" 对于第三个变量,您希望调用somethingA,但不希望如下所示: if type == "A" { return somethingA }else{ return somethingB } 但有点像: return something{type} 像这样的事情在围棋中可能发生吗 多谢各位 像这样的事情在围棋中可能发

我有两个变量:

somethingA := 123
somethingB := 456
这两个变量通过系统填充,假设您有第三个变量:

type := "A"
对于第三个变量,您希望调用somethingA,但不希望如下所示:

if type == "A" {
    return somethingA
}else{
    return somethingB
}
但有点像:

return something{type}
像这样的事情在围棋中可能发生吗

多谢各位

像这样的事情在围棋中可能发生吗

没有

所有这样做的方法都可以归结为您展示的解决方案。

使用地图

package main

import (
    "fmt"
)

func main() {
        x:=make(map[string]int)
        x["SomethingA"]=123
        x["SomethingB"]=456
    fmt.Println(x["SomethingA"])
    fmt.Println(x["SomethingB"])
}

只是提醒一下:类型是围棋中的关键字。所以你不能这样命名你的变量。我不确定你的例子在问什么,比如这些问题,等等。请谁否决了我的问题,让我们在这里解释一下原因。@JimB-例如,你必须对数组和sou进行检查,但其中一个是循环。在我上面,你只能写两个循环,这真的不好。如果可能的话,最好传递数组名,然后执行循环。如果可能的话,绝对可以,但如果不行?不管怎样,我同意你的观点,这是唯一正确的方法,除了使用不需要任何条件的映射之外。@Adrian映射只是隐藏了条件。不完全正确。虽然maps的实现肯定涉及到一些分支,但它根本不是同一个实现。这是一个基于哈希表的完全不同的实现。