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别的地方还有没有。
00
相似问题