MST

星途 面试题库

面试题:Go方法表达式在并发场景下的应用

在Go语言的并发编程中,使用方法表达式结合 `goroutine` 实现一个简单的任务分发场景。假设有一个 `Worker` 结构体,包含 `ID` 和 `Work` 方法,`Work` 方法模拟执行任务并打印任务编号和 `Worker` 的 `ID`。请创建多个 `Worker` 实例,并通过方法表达式启动 `goroutine` 来并发执行任务,每个任务的编号从1到10。 ```go package main import ( "fmt" "sync" ) type Worker struct { ID int } func (w Worker) Work(taskID int) { fmt.Printf("Worker %d is working on task %d\n", w.ID, taskID) } ```
38.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
)

type Worker struct {
    ID int
}

func (w Worker) Work(taskID int) {
    fmt.Printf("Worker %d is working on task %d\n", w.ID, taskID)
}

func main() {
    var wg sync.WaitGroup
    workers := []Worker{
        {ID: 1},
        {ID: 2},
        {ID: 3},
    }

    for i := 1; i <= 10; i++ {
        workerIndex := (i - 1) % len(workers)
        wg.Add(1)
        go func(taskID int) {
            defer wg.Done()
            (workers[workerIndex]).Work(taskID)
        }(i)
    }

    wg.Wait()
}