go关键字用于启动goroutine实现并发,语法为go functionName()或go func(){}(),主函数退出会终止所有goroutine,需用sync.WaitGroup同步,避免数据竞争。

在 Go 语言中,go 关键字用于启动一个goroutine,这是 Go 实现并发的核心机制之一。它非常轻量,可以高效地并发执行函数。
使用 go 启动 goroutine 的语法非常简单:
go functionName(parameters)也可以启动匿名函数:
go func() { // 执行逻辑 }()注意末尾的括号 (),表示立即调用该匿名函数。
立即学习“go语言免费学习笔记(深入)”;
goroutine 是由 Go 运行时管理的轻量级线程,与操作系统线程不同,它的创建和销毁开销极小,一个程序可以轻松启动成千上万个 goroutine。
关键行为包括:
下面是一个简单的并发打印示例:
package mainimport ( "fmt" "time" )
func sayHello() { fmt.Println("Hello from goroutine") }
func main() { go sayHello() fmt.Println("Hello from main")
// 主协程等待,否则 goroutine 来不及执行 time.Sleep(100 * time.Millisecond)
}
如果不加 time.Sleep,main 函数可能在 goroutine 执行前就结束了。
实际开发中,不能依赖 time.Sleep 来等待 goroutine 结束。应使用 sync.WaitGroup 进行同步:
package mainimport ( "fmt" "sync" )
func worker(id int, wg *sync.WaitGroup) { defer wg.Done() fmt.Printf("Worker %d is working\n", id) }
func main() { var wg sync.WaitGroup
for i := 1; i <= 3; i++ {
wg.Add(1)
go worker(i, &wg)
}
wg.Wait() // 等待所有 goroutine 完成
fmt.Println("All workers done")}
通过 Add 增加计数,每个 goroutine 执行完成后调用 Done,最后用 Wait 阻塞直到全部完成。
基本上就这些。go 关键字让并发变得简单,但要小心资源竞争和主协程提前退出的问题。合理使用 WaitGroup 或 channel 可以有效管理并发流程。
以上就是Golang如何使用go关键字_Go goroutine启动语法解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号