亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang的bufio包報錯需要解釋

golang的bufio包報錯需要解釋

Go
守著一只汪 2022-10-31 16:22:39
package mainimport (  "bufio"  "fmt"  "os")func main() {  writeBuf := make([]byte, 1)  fp, err := os.OpenFile("test.d", os.O_CREATE, 0777)  bf := bufio.NewWriterSize(fp, 3)  writeBuf = []byte("1")  writeCount, err := bf.Write(writeBuf)  fmt.Println(writeCount)  writeBuf = []byte{'2'}  writeCount, err = bf.Write(writeBuf)  fmt.Println(writeCount)  writeBuf = []byte{'3'}  writeCount, err = bf.Write(writeBuf)  fmt.Println(writeCount)  writeBuf = []byte{'4'}  writeCount, err = bf.Write(writeBuf)  if err != nil {    fmt.Println("Error4:", err)    os.Exit(-1)  }  fmt.Println(writeCount)  bf.Flush()  fp.Close()}為什么這會給出錯誤: 1 1 1 Error4: write test.d: bad file descriptor exit status 255我認為 NewWriterSize 為 3 意味著在寫入三個字節后,輸出被刷新。我在第 4 次寫入時收到錯誤消息。如果我將 NewWriterSize 緩沖區大小更改為 4,它可以工作。為簡潔起見,我省略了未報告錯誤的錯誤檢查。
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

您不檢查從 os.OpenFile 返回的錯誤。我預計這是錯誤的,因為您需要在標志中使用 O_RDWR 或 O_WRONLY (如果您希望能夠寫入文件)。但是使用 os.Create 而不是 os.OpenFile 更容易,除非你真的需要 os.OpenFile 的 perm 選項。



查看完整回答
反對 回復 2022-10-31
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號