在Go语言(Golang)中,实现并发主要依赖于两个关键字:goroutine
和 channel
。goroutine
是Go语言中的轻量级线程,而 channel
则用于在 goroutine
之间传递数据。下面是一个简单的示例,展示了如何在Debian上使用Go语言实现并发。
首先,确保你已经在Debian上安装了Go语言。如果还没有安装,可以通过以下命令安装:
sudo apt-get update sudo apt-get install golang-go
接下来,创建一个名为 main.go
的文件,并添加以下代码:
package main import ( "fmt" "sync" "time" ) func printNumbers(wg *sync.WaitGroup) { defer wg.Done() for i := 1; i <= 5; i++ { fmt.Printf("Number: %d\n", i) time.Sleep(1 * time.Second) } } func main() { var wg sync.WaitGroup wg.Add(1) // 增加WaitGroup的计数器 go printNumbers(&wg) // 创建一个新的goroutine来执行printNumbers函数 wg.Wait() // 等待所有的goroutine完成 fmt.Println("All goroutines finished.") }
在这个示例中,我们定义了一个名为 printNumbers
的函数,它接受一个指向 sync.WaitGroup
的指针作为参数。在函数内部,我们使用 defer
语句确保在函数返回之前调用 wg.Done()
来减少 WaitGroup
的计数器。
在 main
函数中,我们创建了一个 sync.WaitGroup
实例,并通过调用 wg.Add(1)
来增加计数器。然后,我们使用 go
关键字创建一个新的 goroutine
来执行 printNumbers
函数。最后,我们调用 wg.Wait()
等待所有的 goroutine
完成。
要运行此示例,请在终端中导航到包含 main.go
文件的目录,并执行以下命令:
go run main.go
你将看到每隔一秒钟打印一个数字,直到所有数字都打印完毕。这就是在Debian上使用Go语言实现并发的一个简单示例。你可以根据需要修改和扩展此示例以满足你的需求。