Tec*_*ast 1 variables scope compiler-errors go
我正在尝试以下简单的转换程序。
package main
import (
"fmt"
"strconv"
)
func main(){
var numStr string="2213"
var numVar int64
numVar,err=strconv.ParseInt(numStr,10,64)
fmt.Println(numVar)
}
Run Code Online (Sandbox Code Playgroud)
以上抛出以下编译错误。
undefined: err
Run Code Online (Sandbox Code Playgroud)
然后我尝试定义 err, error 变量。
package main
import (
"fmt"
"strconv"
)
func main(){
var numStr string="2213"
var numVar int64
var err error
numVar,err=strconv.ParseInt(numStr,10,64)
fmt.Println(numVar)
}
Run Code Online (Sandbox Code Playgroud)
但是这次编译器抛出了以下错误。
err declared and not used
Run Code Online (Sandbox Code Playgroud)
我参考了以下 stackoverflow 问题Undefined err variable但没有完全理解行为,因此在这里提出问题。
你声明err
:
var err error
Run Code Online (Sandbox Code Playgroud)
然后你给它分配一些东西:
numVar,err=strconv.ParseInt(numStr,10,64)
Run Code Online (Sandbox Code Playgroud)
但随后您不会查看err
或访问它。只是分配一个值不算是使用它,你必须看看err
:
numVar,err=strconv.ParseInt(numStr,10,64)
if err != nil {
// Complain or something here
}
Run Code Online (Sandbox Code Playgroud)
如果您真的不想为错误而烦恼,那么请使用空白标识符来说明:
numVar, _ = strconv.ParseInt(numStr, 10, 64)
Run Code Online (Sandbox Code Playgroud)