Sobes.tech
Назад к вопросам
Junior — Middle
76

Какие основные конструкции используются для управления и выполнения горутин в языке программирования?

Компании, где спрашивали
Evrone

Ответ от нейросети

sobes.tech AI

Для управления и выполнения горутин в Go используются следующие основные конструкции:

  • Запуск горутины: ключевое слово go перед вызовом функции запускает её в отдельной горутине, например:

    go myFunction()
    

    Это позволяет выполнять функцию асинхронно.

  • Каналы (channels): используются для синхронизации и обмена данными между горутинами. Канал создаётся так:

    ch := make(chan int)
    

    Отправка и получение данных:

    ch <- 42      // отправка
    val := <-ch   // получение
    

    Каналы обеспечивают безопасную коммуникацию и блокируют горутину, если данные не готовы.

  • sync.WaitGroup: используется для ожидания завершения группы горутин. Пример:

    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        // работа горутины
    }()
    wg.Wait() // ждем завершения всех горутин
    
  • select: позволяет ждать сразу несколько операций с каналами, выбирая готовую к выполнению. Пример:

    select {
    case msg := <-ch1:
        fmt.Println("Получено из ch1:", msg)
    case ch2 <- 42:
        fmt.Println("Отправлено в ch2")
    default:
        fmt.Println("Ни одна операция не готова")
    }
    

Эти конструкции позволяют эффективно запускать, синхронизировать и управлять параллельным выполнением в Go.