在if / else范围内有多个临时变量

时间:2018-07-05 06:42:43

标签: go

我刚刚注意到我们可以在以下if/else语句中声明一个阴影变量

package main

import (
  "fmt"
)

func main() {
  num := 8


  if num := 9; num < 0 {
    fmt.Println(num, "is negative")
  } else if num < 10 {
    fmt.Println(num, "has 1 digit")
  } else {
    fmt.Println(num, "has multiple digits")
  }

  fmt.Println("num outside:",num)
}

现在我的问题是,我只能在if/else语句中声明一个临时变量吗?

我在下面尝试过两种方法,但由于遇到错误而失败

//if num := 9; c := 10; num < 0 {..... //syntax error: c := 10 used as value

//if num := 9, c:= 10; num < 0 {..... //syntax error: unexpected :=, expecting semicolon or newline

1 个答案:

答案 0 :(得分:3)

为什么,Go有元组分配。试试:

if num,c:=9,10; num<0 {
//whatever
}

现在我们要解决的是,您应该注意,最佳语句(;之前的语句)可以不仅仅是赋值。书写是合法的:

if fmt.Println("something"); num<10 {
}