Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 调试无效内存地址_Windows_Go_Encryption - Fatal编程技术网

Windows 调试无效内存地址

Windows 调试无效内存地址,windows,go,encryption,Windows,Go,Encryption,我正在构建一个简单的Go应用程序,但当我在Windows 10上执行程序时,会出现以下错误: 更新:现在包括完整的堆栈跟踪。 panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x18 pc=0x478edd] goroutine 1 [running]: github.com/UpperCenter/Amalthea/src/file

我正在构建一个简单的Go应用程序,但当我在Windows 10上执行程序时,会出现以下错误: 更新:现在包括完整的堆栈跟踪。

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x18 pc=0x478edd]

goroutine 1 [running]:
github.com/UpperCenter/Amalthea/src/files.(*Files).ScanToEncrypt.func1(0xc000162aa0, 0x4c, 0x4caaa0, 0xc000167b20, 0x0, 0x0, 0x4c, 0x2)
        /home/uppercenter/Amalthea/src/files/files.go:48 +0x13d
path/filepath.walk(0xc000162aa0, 0x4c, 0x4caaa0, 0xc000167b20, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:360 +0x443
path/filepath.walk(0xc000560e10, 0x30, 0x4caaa0, 0xc000167500, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.walk(0xc0001719b0, 0x24, 0x4caaa0, 0xc000191650, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.walk(0xc000011720, 0x1a, 0x4caaa0, 0xc000180000, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.walk(0xc0000116a0, 0x14, 0x4caaa0, 0xc000175dc0, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.walk(0xc00000acc0, 0xc, 0x4caaa0, 0xc000174af0, 0xc000221d18, 0x0, 0x0)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.walk(0x4a4206, 0x9, 0x4caaa0, 0xc00010a000, 0xc000221d18, 0x0, 0x457a58)
        /usr/lib/go/src/path/filepath/path.go:384 +0x31a
path/filepath.Walk(0x4a4206, 0x9, 0xc000077d18, 0x280, 0x26c)
        /usr/lib/go/src/path/filepath/path.go:406 +0x10c
github.com/UpperCenter/Amalthea/src/files.(*Files).ScanToEncrypt(0xc000077f48, 0xc000006018, 0xc000077df8, 0x1, 0x1, 0x26c)
        /home/uppercenter/Amalthea/src/files/files.go:40 +0x86
main.main()
        /home/uppercenter/Amalthea/main.go:63 +0x193
我读到发生这种情况是因为
ScanToEncrypt
中有一个错误没有得到处理

以下是
ScanToEncrypt
功能:

//ScanToEncrypt扫描所有要加密的有效文件
func(f*文件)ScanToEncrypt()([]字符串,错误){
//将可加密文件存储为数组。
var文件[]字符串
//从“rootDir”开始“漫游”,以获取所有可用的文件夹和子文件夹
err:=filepath.Walk(f.rootDir,func(路径字符串,info os.FileInfo,err error)错误{
//返回描述命名文件的信息。
stat,u:=os.stat(路径)
//HasSuffix查找编码文件。
if!strings.HasSuffix(路径“.amaltheanc”){
如果!统计IsDir(){
//检查文件是否低于“大小”定义的最大文件大小(以字节为单位)`

如果stat.Size()
。您应该处理它,例如,如果错误不为空,则返回错误,或者打印错误消息

请更新问题以包含完整的堆栈跟踪。文件
/home/uppercenter/Amalthea/src/files/files.go
在线
48
?@mkopriva它是``go if!stat.IsDir(){那么这意味着
stat
nil
,这意味着
os.stat
返回了一个您应该适当处理的错误。这是正确的方法吗?
go stat,error:=os.stat(path)if err!=nil{log.Fatal(error)}
@UpperCenter不要执行
log.Fatal
,除非这是您特别想要执行的操作。通常,您应该将该错误传播给调用方,即如果err!=nil{return err}或者,如果您想跳过
os.Stat
失败的文件,则只需退出该函数,以便
行走
继续到下一个文件,即
如果err!=nil{return nil}
@mkopriva Perfect!我现在可以看到错误了。感谢所有帮助!