goroutineでファイルを保存してファイル名を返す。
func Download(url string, fnameCh chan string, m *sync.Mutex)
var m sync.Mutex
go Download(url, fnameCh, &m)
fname := <- fnameCh
url
Mutex
fnameCh
fname := []
//
m.Lock()
// 2
defer m.Unlock()
file, err := os.Create(fname)
if err != nil {
// ""
fnameCh <- ""
return
}
//1
defer file.Close()
//
//
// defer
fnameCh <- fname
`defer`main`defer`
func sendCh(ch chan string, fname string){
fnameCh <- []
}
`defer``defer``defer``defer``defer``defer`
fname := []
// 3
// fname[]
defer sendFname(fnameCh, fname)
m.Lock()
// 2
defer m.Unlock()
file, err := os.Create(fname)
if err != nil {
//
// fnameCh <- ""
return
}
//1
defer file.Close()
//
xcX3v84RxoQ-4GxG32940ukFUIEgYdPy
107031c33cd2771efcf74b3285a73849