Буфер ёмкостью 1 и фоновая горутина со sleep

Что выведетMiddleпроверка — Спринт07-t009

Что выведет программа и почему, если main не ждёт фоновую горутину, прежде чем читать общую переменную?

main.gogo
1package main2 3import (4	"fmt"5	"time"6)7 8func main() {9	flag := false10	gate := make(chan struct{}, 1)11	go func() {12		time.Sleep(4 * time.Second)13		flag = true14		<-gate15	}()16	gate <- struct{}{}17	fmt.Println(flag)18}
Чем закончится программа?
Сначала подумай без запуска — на собесе компилятора не будет.