Я не уверен, что это приведет к утечке. Я предполагаю, что, так как я возвращаю функцию GetFile
после запуска подпрограммы go, вероятно, все в порядке. Но я не уверен, может ли это быть проблемой, например. в течение длительного времени файл не найден.
func (p *MyStruct) Launch() {
go p.Generate()
}
func (p *MyStruct) Generate() {
file := p.GetFile()
if file == "" {
return
}
// Do stuff with the file
}
func (p *MyStruct) GetFile() string {
// Get file
*p.SyncChan <- id
fileToProcess, err := tools.ReserveFile(p.Name, id, p.BufferIndex)
<- *p.SyncChan
if fileToProcess == "" {
time.Sleep(time.Minute * 6)
go p.Generate()
return ""
}
return fileToProcess
}