发布时间:2024-12-23 05:04:19
```go package main import "fmt" func printOdd() { for i := 1; i <= 100; i += 2 { fmt.Println("Odd:", i) } } func printEven() { for i := 2; i <= 100; i += 2 { fmt.Println("Even:", i) } } func main() { go printOdd() go printEven() // 给 Goroutine 充足的时间执行 time.Sleep(time.Second) } ```
在上述示例中,我们定义了两个函数 `printOdd` 和 `printEven`,分别负责打印奇数和偶数。通过使用 `go` 关键字,我们可以将这两个函数并发地运行。最后,我们使用 `time.Sleep` 来等待一段时间,以保证 Goroutine 充足的执行时间。```go package main import "fmt" func printOdd(odd chan<- int, even <-chan int) { for i := 1; i <= 100; i += 2 { fmt.Println("Odd:", i) odd <- i <-even } } func printEven(odd <-chan int, even chan<- int) { for i := 2; i <= 100; i += 2 { <-odd fmt.Println("Even:", i) even <- i } } func main() { odd := make(chan int) even := make(chan int) go printOdd(odd, even) go printEven(odd, even) // 给 Goroutine 充足的时间执行 time.Sleep(time.Second) } ```
在上述示例中,我们定义了两个 Channel `odd` 和 `even`,作为奇数和偶数打印函数之间的通信桥梁。通过使用不同的方向箭头 `<-`,我们可以限制 Channel 的读写权限,从而确保交替打印的正确性。