第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在函數(shù)失敗時(shí)刪除文件

在函數(shù)失敗時(shí)刪除文件

Go
泛舟湖上清波郎朗 2022-08-30 15:10:31
如果我運(yùn)行此代碼:package mainimport "os"func pass() bool { return false }func main() {   f, e := os.Create("file.txt")   if e != nil {      panic(e)   }   defer f.Close()   if ! pass() {      e := os.Remove("file.txt")      if e != nil {         panic(e)      }   }}我得到這個(gè)結(jié)果:The process cannot access the file because it is being used by another process.如果我這樣做,我會(huì)得到預(yù)期的結(jié)果:defer f.Close()if ! pass() {   f.Close()   e := os.Remove("file.txt")   if e != nil {      panic(e)   }}但如果可能的話,我想避免重復(fù)。該文件始終需要關(guān)閉,但如果某些功能失敗,也需要?jiǎng)h除該文件。是否有更好的方法可用于我正在嘗試做的事情?響應(yīng)注釋:文件將從多個(gè) HTTP 請(qǐng)求寫(xiě)入。第一個(gè)請(qǐng)求可能通過(guò),第二個(gè)請(qǐng)求失敗。Close()
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果這種情況經(jīng)常出現(xiàn),請(qǐng)創(chuàng)建一個(gè)幫助程序函數(shù):


func nuke(f *os.File) {

   name := f.Name()

   f.Close()

   if err := os.Remove(name); err != nil {

      panic(err)

   }

}

像這樣使用它:


func main() {

   f, e := os.Create("file.txt")

   if e != nil {

      panic(e)

   }

   defer f.Close()

   if ! pass() {

      nuke(f)

   }

}


查看完整回答
反對(duì) 回復(fù) 2022-08-30
  • 1 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)