面试题答案
一键面试package main
import (
"fmt"
)
func printNumber(num int) {
fmt.Println("Goroutine打印的数字:", num)
}
func main() {
num := 10
go printNumber(num)
// 防止主线程退出
select {}
}
使用Go语言的Goroutine来处理并发任务主要有以下原因:
- 轻量级:Goroutine非常轻量级,创建和销毁的开销极小,可以轻松创建成千上万的Goroutine,相比传统线程,更适合高并发场景。
- 易于编写:通过简单地使用
go
关键字就可以创建一个新的Goroutine,使得并发编程变得简单直观,不需要像其他语言那样处理复杂的线程创建、管理和同步等操作。 - 高效的调度:Go语言的运行时系统(runtime)有自己的调度器,它采用M:N调度模型,将多个Goroutine映射到较少的操作系统线程上,能在用户态高效地调度Goroutine,提高了并发性能。