Функция, вызывающая себя как программа, это опасно? - PullRequest
0 голосов
/ 18 октября 2019

Я не уверен, что это приведет к утечке. Я предполагаю, что, так как я возвращаю функцию 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
}
...