AS
Size: a a a
AS
R
AS
c := make(chan int)то пример так же работает
go fibonacci(10, c)
AS
…
mailChan := make(chan *mail.Message)
go processMail(redis, mailChan)
for _, fileName := range fileNames {
err := ReadFile(mailChan, fileName)
if err !=nil {ololo}
}
close(mailChan)
…
func ReadFile(job chan<- *mailMessage, fileName string) (err error) {
file, err := os.Open(fileName)
…
m, err := mail.ReadMessage(file)
job <- m
}
func processMail(redis writer.ProcessRedis, in <-chan *mail.Message) {
for m := range in {
rcpt := strings.ToLower(m.Header.Get("X-Failed-Recipients"))
….
redis.Insert(record)
}
}
for m := range in {Y
fmt.Printf("Chan length: %d", len(in)) на второй строке после for … range, дальше все завершаетсяY
Y
Y
run -race - все работает, как надоAS
fmt.Printf("Chan length: %d", len(in)) на второй строке после for … range, дальше все завершаетсяY
Y
Y
R
Y
MV
Y
Y
R
MV
Y