Ошибка связана с тем, что вы пытаетесь отправить данные по каналу
valChan
, но все горутины уже завершили свою работу.
func scanFiles(file1, file2 *bufio.Scanner, config Config) {
scanWg := new(sync.WaitGroup)
scanWg.Add(2)
file1SubStrings := make(map[string]string)
file2SubStrings := make(map[string]string)
go func() {
var substr []string
for file1.Scan() {
substr = strings.Split(file1.Text(), ":")
if len(substr) > 0 {
file1SubStrings[substr[1]] = substr[0]
}
}
scanWg.Done()
}()
go func() {
var substr []string
for file2.Scan() {
substr = strings.Split(file2.Text(), ":")
if len(substr) > 0 {
file2SubStrings[substr[0]] = substr[1]
}
}
scanWg.Done()
}()
scanWg.Wait()
if file2SubStrings != nil && file1SubStrings != nil {
wg := new(sync.WaitGroup)
valChan := make(chan struct{ k, v string })
for i := 0; i < config.Count_check; i++ {
wg.Add(1)
go findIntersections(valChan, file2SubStrings, wg, config)
}
for k, v := range file1SubStrings {
valChan <- struct{ k, v string }{k: k, v: v}
}
close(valChan)
wg.Wait()
}
}