if-else undefined变量编译错误

时间:2013-09-16 08:35:47

标签: compiler-construction go

if someCondition() {
    something := getSomething()
} else {
    something := getSomethingElse()
} 

print(something)

在此代码示例中,编译器出现undefined: something错误。由于这是一个if else语句something变量将在运行时定义,但编译器无法检测到这一点。

如何避免此编译错误,这也将在下一版本中修复?

2 个答案:

答案 0 :(得分:1)

两个something变量是具有不同范围的两个不同变量。它们不存在于if / else块作用域之外,这就是为什么会出现未定义的错误。

您需要在if语句之外定义变量,如下所示:

var something string

if someCondition() {
    something = getSomething()
} else {
    something = getSomethingElse()
} 

print(something)

答案 1 :(得分:1)

在您的代码片段中,您将定义两个something变量,这些变量作用于if语句的每个块。

相反,您需要一个在if语句之外的单个变量:

var something sometype
if someCondition() {
    something = getSomething()
} else {
    something = getSomethingElse()
} 

print(something)