gpt4 book ai didi

variables - 如何正确初始化一些变量?

转载 作者:IT王子 更新时间:2023-10-29 01:51:08 30 4
gpt4 key购买 nike

如果我在 if 中使用变量声明,我会得到一个错误 undefined: completeTime

    if completeTime, err := time.Parse(time.RFC3339Nano, "2016-06-06 18:11:24.617Z"); err != nil {
return
}

fmt.Println(time.Since(completeTime).Seconds())

但是如果我这样声明,我会得到一个错误 completeTime declared and not used

    var completeTime time.Time

if completeTime, err := time.Parse(time.RFC3339Nano, "2016-06-06 18:11:24.617Z"); err != nil {
return
}

fmt.Println(time.Since(completeTime).Seconds())

为什么以及如何正确地做到这一点?

最佳答案

您的代码中存在作用域问题:

if completeTime, err := time.Parse(time.RFC3339Nano, "2016-06-06 18:11:24.617Z"); err != nil {
return
}
fmt.Println(time.Since(completeTime).Seconds())

在此示例中,completeTime 仅针对 if 语句内的局部范围定义,这意味着您不能在其外部使用它。

var completeTime time.Time

if completeTime, err := time.Parse(time.RFC3339Nano, "2016-06-06 18:11:24.617Z"); err != nil {
return
}

fmt.Println(time.Since(completeTime).Seconds())

这个有点棘手。您在开始时定义了一个具有正确范围的 completeTime var。然后,由于 := 运算符,您在 if 语句中定义了 another completeTime,它掩盖了第一个一个。

此外,未使用第二个变量,这就是您收到错误的原因。您可以通过简单地在 if 之外分配 completeTimeerr 来解决此问题:

completeTime, err := time.Parse(time.RFC3339Nano, "2016-06-06 18:11:24.617Z")

if err != nil {
return
}

fmt.Println(time.Since(completeTime).Seconds())

关于variables - 如何正确初始化一些变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37664594/

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