Golang异步编程方式和技巧

作者 | zvalhu

Golang基于多线程、协程实现,与生俱来适合异步编程,当我们遇到那种需要批量处理且耗时的操作时,传统的线性执行就显得吃力,这时就会想到异步并行处理。下面介绍一些异步编程方式和技巧。

一、使用方式

1.最简单的最常用的方式:使用go关键词

func main() {
 go func() {
  fmt.Println("hello world1")
 }()
 go func() {
  fmt.Println("hello world2")
 }()
}

或者:

func main() {
 go Announce("hello world1")
 go Announce("hello world2")
}
func Announce(message string) {
 fmt.Println(message)
}

使用匿名函数传递参数

data := "Hello, World!"
go func(msg string) {
      // 使用msg进行异步任务逻辑处理
      fmt.Println(msg)
}(data)

这种方式不需要考虑返回值问题,如果要考虑返回值,可以使用下面的方式。

2.通过goroutine和channel来实现

ch := make(chan int, 1) // 创建一个带缓冲的channel
// ch := make(chan int, 0) // 创建一个无缓冲的channel

go func() {
// 异步任务逻辑
ch