下面代码中,x 已声明,y 没有声明,判断每条语句的对错。
1)x, _ := f()
2)x, _ = f()
3)x, y := f()
4)x, y = f()
1)错 2)对 3)对 4)错
1. x, _ := f()
-
错误。
-
原因:
:=是短变量声明操作符,要求左侧的所有变量都必须是未声明的。由于x已经声明,因此不能使用:=。 -
修正:如果
x已经声明,应该使用=赋值操作符:x, _ = f()
2. x, _ = f()
- 正确。
- 原因:
=是赋值操作符,可以用于已声明的变量。x已经声明,_是空白标识符,用于忽略返回值,因此这条语句是合法的。
3. x, y := f()
- 正确。
- 原因:
:=是短变量声明操作符,要求左侧至少有一个变量是未声明的。虽然x已经声明,但y是未声明的,因此这条语句是合法的。此时,x会被重新赋值,y会被声明并赋值。
4. x, y = f()
-
错误。
-
原因:
=是赋值操作符,要求左侧的所有变量都必须是已声明的。由于y未声明,因此这条语句会编译失败。 -
修正:如果
y未声明,应该使用:=:x, y := f()