MST

星途 面试题库

面试题:Go语言中Goroutine批量任务处理基础

在Go语言中,如何使用Goroutine实现简单的批量任务处理?例如,有一组数字,需要对每个数字进行平方运算并返回结果。请编写代码实现,并解释Goroutine在其中的作用。
38.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func square(num int, resultChan chan int) {
    result := num * num
    resultChan <- result
}

func main() {
    numbers := []int{1, 2, 3, 4, 5}
    resultChan := make(chan int, len(numbers))

    for _, num := range numbers {
        go square(num, resultChan)
    }

    for i := 0; i < len(numbers); i++ {
        fmt.Println(<-resultChan)
    }

    close(resultChan)
}

Goroutine在其中的作用

  1. 并发执行:Goroutine允许我们并发地执行square函数,对于切片中的每个数字,都启动一个新的Goroutine去执行平方运算。这意味着这些运算可以在多个逻辑处理器(可能是多核CPU)上并行执行,大大提高了运算效率,尤其是当数字数量较多时。
  2. 轻量级:Goroutine非常轻量级,相比传统的线程,创建和销毁Goroutine的开销很小,所以可以轻松创建大量的Goroutine来处理批量任务。
  3. 异步处理:每个Goroutine独立运行,不会阻塞主线程,主线程可以继续执行其他操作(比如创建更多的Goroutine),而不需要等待某个平方运算完成。通过channel来同步和获取每个Goroutine的运算结果。