【Go语言圣经】Goroutines和Channels

引用
本文内容来自:Go语言圣经(中文版)

环境配置:

  • 系统:Windows11
  • 编辑器:vscode
注意
本文假设你已经安装了Go并配置好相关环境,如果你还没有安装Go,请前往Go官方网站进行下载安装

🌱 Goroutines

在Go语言中,每一个并发的执行单元叫作一个goroutine。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
	"fmt"
	"time"
)

func main() {
	go spinner(100 * time.Millisecond)
	const n = 45
	fibN := fib(n) // slow
	fmt.Printf("\rFibonacci(%d) = %d\n", n, fibN)
}

func spinner(delay time.Duration) {
	for {
			for _, r := range `-\|/` {
					fmt.Printf("\r%c", r)
					time.Sleep(delay)
			}
	}
}

func fib(x int) int {
	if x < 2 {
			return x
	}
	return fib(x-1) + fib(x-2)
}
0%