下面代码中,x 已声明,y 没有声明,判断每条语句的对错。

1x, _ := f()
2x, _ = f()
3x, y := f()
4x, 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()