Golang 未定义:错误

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但没有完全理解行为,因此在这里提出问题。

mu *_*ort 8

你声明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)