Go中的简短声明

我正在学习 Go,但我不明白代码如何允许我重新声明相同的变量“ phones ”。我认为你只能在函数作用域内简短地声明一个变量,然后只有在用它声明一个新变量时才能重新声明该变量。但是使用下面的代码,我可以短声明“ phones ”两次,而无需在第二个短声明语句中声明新变量。

package main

import "fmt"

func main() {
    phones := map[string]string{
        "bowen": "202-555-0179",
        "dulin": "03.37.77.63.06",
        "greco": "03489940240",
    }

    multiPhones := map[string][]string{
        "bowen": {"202-555-0179"},
        "dulin": {"03.37.77.63.06", "03.37.70.50.05", "02.20.40.10.04"},
        "greco": {"03489940240", "03489900120"},
    }

  fmt.Println(phones)

  who, phone := "greco", "N/A"
  if phones := multiPhones[who]; len(phones) >= 2 {
    fmt.Println(phones)
    phone = phones[1]
  }

  fmt.Printf("%s's 2nd phone number: %sn", who, phone)
}

回答

我以为你只能在函数作用域内简短地声明一个变量

不,这是错误的。Go 是块作用域,而不是函数作用域。每个变量可以在每个 块中声明一次并if开始一个新块。

(请注意,这适用于任何类型的声明,无论是短的还是长的。)


以上是Go中的简短声明的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>