fib.txt 为什么存不存在都写不到文件中内容,我试着加断点,代码也走了,但是文件中还是空的,是我那里写错了吗?

来源:8-2 错误处理概念

失眠的小绵羊

2022-01-05

package main

import (
“bufio”
“fmt”
“learngo/functional/fib”
“os”
)
/*

1、 确保调用在函数结束时发生

2、 参数在defer语句时计算

3、defer 列表为后进行出

*/

func tryDefer(){
defer fmt.Println(1)
defer fmt.Println(2)
fmt.Println(3)

for i := 0; i < 100; i++ {
	defer fmt.Println(i)
	if i == 30 {
		panic(" printed too many ")
	}
}

}

func writeFile(filename string) {
// 打开一个文件
//file, err := os.Create(filename)
file, err := os.OpenFile(filename, os.O_EXCL|os.O_CREATE, 0666)

// 自定义error

//err = errors.New(" this is a custom error !")

fmt.Printf( " open file error %s  \n :",err)

 //异常处理
if  err != nil {

	if pathError , ok := err.(*os.PathError); !ok {
		panic(err)
	}else{
		fmt.Printf( "%s,  %s,  %s \n",
		pathError.Op,
		pathError.Path,
		pathError.Err,
		)
	}
    return
}
//关闭文件
defer file.Close()

 writer := bufio.NewWriter(file)
 // 写入文件
 defer  writer.Flush()

 f := fib.Fibonacci()
 for i := 0; i < 20; i++ {
 	fmt.Fprintln(writer,f())
 }

}

func main() {
writeFile(“fib1.txt”)
//tryDefer()
}

写回答

1回答

ccmouse

2022-01-13

看看fmt.Fprintln(writer,f())这句,我们跟到Fprintln里面,看看打印的值有没有出现。

或者把fmt.Fprintln改成fmt.Println也行,确保我们生成了正确的值。

如果正确的话,我们再看一下fmt.Fprintln的返回值吧。它返回的是 (n int, err error)

我们看看写了多少字节(n),有没有出错(err)。

另外,也有可能是看错文件了,务必找找fib1.txt别的地方还有没有。


0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程