在 Ubuntu 上用 Golang 的 goroutine?其实这事儿简单得很。只要先把 Go 装好,剩下的就是写个函数,前面加个 go,就能让任务飞起来。下面咱们一步步走。

第一步:把 Go 装进系统
如果你的机器上还没装 Go,别急,几行命令就能搞定。打开终端,执行下面的下载和解包命令:
wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz
然后把它加到环境变量里,这样系统才能找到 go 命令:
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profilesource ~/.profile
最后验证一下安装是否成功:
go version
看到版本号输出来,就说明 Go 已经准备好迎接 goroutine 了。
一个最简单的 goroutine 示例
goroutine 的本质是轻量级线程——你可以用它同时做几件事。来看个直观的例子。
先创建一个文件叫 main.go:
touch main.go
用你喜欢的编辑器打开它,把下面的代码粘进去:
package mainimport (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf("Number: %d\n", i)
time.Sleep(1 * time.Second)
}
}
func main() {
go printNumbers() // 用 go 关键字启动一个 goroutine
time.Sleep(6 * time.Second) // 主线程等一会儿,让 goroutine 有空跑完
fmt.Println("Finished")
}
这段代码的逻辑很直白:printNumbers 函数会从 1 数到 5,每数一个数字等一秒。在 main 里用 go printNumbers() 启动它,主线程不会等它,而是继续往下走。为了让 goroutine 有机会完整执行,我们用 time.Sleep(6 * time.Second) 让主线程挂起 6 秒——足够它把数字都打印出来。
现在在终端里运行它:
go run main.go
你会看到数字每隔一秒蹦出来一个,最后打印出 “Finished”。这就是 goroutine 的基本玩法——一个简单的并发任务就跑了起来。
当然,实际项目中你不会只用 Sleep 来等 goroutine,而是会用 sync.WaitGroup 或 channel 来同步。但作为入门,这个例子已经足够让你感受到 goroutine 有多轻量。你也可以在同一个程序里启动多个 goroutine,让它们并行执行不同函数,试试看就知道它的威力了。
