在需要分步寫入整條信息時做回滾操作時使用
/* * @Description: * @Author: gphper * @Date: 2021-11-06 20:11:56 */ package main import ( "fmt" "io" "log" "os" ) func main() { f, err := os.OpenFile(`file.txt`, os.O_RDWR, os.ModePerm) if err != nil { log.Fatal(err) } initSize, err := f.Seek(0, io.SeekEnd) if err != nil { log.Fatal(err) } fmt.Println(initSize) //模擬出錯時出錯時 f.WriteString("error!") //恢復寫之前的狀態 err = f.Truncate(initSize) if err != nil { log.Fatal(err) } _, err = f.Seek(initSize, io.SeekStart) if err != nil { log.Fatal(err) } //狀態恢復完成 //開始新的寫操作 _, err = f.WriteString("new start text") if err != nil { log.Fatal(err) } }