Перейти к содержимому

Что будет в консоли и почему?

go · basicsEnjoyPro4 кв 2025не решено

Что будет в консоли и почему?

type TicketOffice struct {
tickets int
}
func (t *TicketOffice) SellTicket() bool {
if t.tickets > 0 {
t.tickets--
return true
}
return false
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
ticketOffice := TicketOffice{tickets: 10}
var wg sync.WaitGroup
wg.Add(5)
for i := 0; i < 5; i++ {
go func(id int) {
defer wg.Done()
for j := 0; j < 5; j++ {
time.Sleep(time.Duration(rand.Intn(500)) * time.Millisecond)
if ticketOffice.SellTicket() {
fmt.Printf("Касса %d: продала билет\n ", id)
} else {
fmt.Printf("Касса %d: билеты закончились\n ", id)
}
}
}(i + 1)
}
wg.Wait()
fmt.Println("Билеты закончились!")
}

Источник: EnjoyPro · 4 кв 2025

← Что будет в консоли и почему? · Все задачи · Go · Что выведет на экран? →