在 Go 语言中,go func() {}
是一种创建 goroutine 的方式,也就是并发执行的代码块。这是 Go 语言中的并发编程特性。
go
关键字用于创建一个新的 goroutine,在新的 goroutine 中运行一个函数。这是一种简单的方式来实现并发编程。
下面是一个简单的例子:
package main
import (
"fmt"
"time"
)
func main() {
go func() {
fmt.Println("Hello from goroutine")
}()
time.Sleep(1 * time.Second) // 等待 goroutine 执行完成
fmt.Println("Hello from main")
}
在这个例子中,我们创建了一个匿名函数并立即执行它。这个函数在一个新的 goroutine 中运行,所以它会并发地运行。time.Sleep(1 * time.Second)
是为了确保主 goroutine 等待一秒钟,以便我们看到从新 goroutine 打印的消息。
另外,你也可以将 go func()
传递参数和返回值。
package main
import (
"fmt"
"time"
)
func main() {
go func(s string) {
fmt.Println(s)
}(`Hello from goroutine`)
time.Sleep(1 * time.Second)
fmt.Println("Hello from main")
}
在这个例子中,我们向匿名函数传递了一个字符串参数,并且这个函数在新的 goroutine 中运行。
最后,你也可以从 go func()
中获取返回值。
package main
import (
"fmt"
"time"
)
func main() {
c := make(chan int)
go func() {
fmt.Println("Hello from goroutine")
c <- 1
}()
go func() {
fmt.Println("Hello again from another goroutine")
c <- 2
}()
x, y := <-c, <-c
fmt.Println(x, y)
time.Sleep(1 * time.Second)
fmt.Println("Hello from main")
}
在这个例子中,我们创建了两个新的 goroutine,每个都向通道发送一个整数。然后我们从通道接收两个值并打印出来。
以上就是 go func() {}
的一些基本用法。