gpt4 book ai didi

go - Go中的简短声明

转载 作者:行者123 更新时间:2023-12-03 10:08:02 26 4
gpt4 key购买 nike

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

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: %s\n", who, phone)
}

最佳答案

Go不允许在相同范围内重新定义变量。
您拥有的代码包含两个不同范围的变量。
Go中允许这样做。这不成问题。
您的代码类似于:

func main() { 
name := "adam"
if name := true; name != false { // the var name here is in if scope.

fmt.Println("name in if scope is :", name)
}

fmt.Println("name out if scope is : ", name)

// name := "jawad" this is error. redifined in same scope not allowed.
}

关于go - Go中的简短声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65643380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com