运行go代码时出现运行时错误
我正在尝试运行一个简单的golang代码运行go代码时出现运行时错误,go,Go,我正在尝试运行一个简单的golang代码 $ cat blah.go package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("sudo","ls") out, err := cmd.Output() fmt.Printf("%s", string(out)) fmt.Printf("%s", err.Er
$ cat blah.go
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("sudo","ls")
out, err := cmd.Output()
fmt.Printf("%s", string(out))
fmt.Printf("%s", err.Error())
}
我得到:
$ go run blah.go
blah.go
utils.go
weave_help_test.go
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x20 pc=0x400dc1]
goroutine 1 [running]:
runtime.panic(0x4b32a0, 0x5b1fc8)
/usr/lib/go/src/pkg/runtime/panic.c:266 +0xb6
main.main()
/home/Abhishek/go/src/github.com/blah.go:12 +0x1c1
exit status 2
我应该如何调试它
$ go version
go version go1.2.1 linux/amd64
运行命令返回的错误对象为nil(这很好!这意味着它成功了!)。但是您正在访问
err.Error()
,在nil对象上访问它会导致这种恐慌
所以
a。检查err是否为零
b。您只需打印它,无需调用err.Error()
i、 e.您的代码应该如下所示:
out, err := cmd.Output()
if err != nil {
fmt.Println("Error running command:", err)
return
//or even panic here
}
// we only get here if err is nil
fmt.Printf("%s", string(out))
在使用cmd.Output的结果之前,您应该检查cmd.Output返回的错误。谢谢,在错误检查之后工作!谢谢你的解释。我的菜鸟错误:)