您好,匿名用户
随意问技术百科期待您的加入

Go语言错误处理,defer问题

0 投票
package main

import (
	"fmt"
	"os"
)
func main() {
	files, err := os.Open("testqq.txt")
	defer files.Close()
	if err != nil {
		fmt.Printf("Error is:%s", "Game Over!")
		return
	}
}

这段代码简单打开文件"testqq.txt", 此文件根本就不存在的情况下, defer files.Close()会报错。
因为files是nil, 这个代码是不要判断files是否为nil。

用户头像 提问 2012年 12月1日 @ Athena 上等兵 (346 威望)
分享到:

1个回答

0 投票
 
最佳答案

这个代码你需要这样写,首先判断错误,然后再defer定义

func main() {
        files, err := os.Open("testqq.txt")        
        if err != nil {
                fmt.Printf("Error is:%s", "Game Over!")
                return
        }
        defer files.Close()
    }
用户头像 回复 2012年 12月1日 @ Virgo 上等兵 (284 威望)
选中 2012年 12月1日 @Athena
提一个问题:

相关问题

0 投票
1 回复 29 阅读
0 投票
1 回复 31 阅读
用户头像 提问 2012年 12月1日 @ Sejuani 上等兵 (427 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Sion 上等兵 (319 威望)
0 投票
1 回复 66 阅读
用户头像 提问 2012年 12月1日 @ Talon 上等兵 (294 威望)
0 投票
1 回复 33 阅读
用户头像 提问 2012年 12月1日 @ Varus 上等兵 (281 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...