发布时间:2024-11-05 16:30:34
``` func main() { go helloWorld() } func helloWorld() { fmt.Println("Hello, World!") } ```
上述代码中,通过`go helloWorld()`创建了一个携程,并在携程中执行了`helloWorld()`函数。这样的话,`helloWorld()`函数将会在独立的线程中并发执行。``` import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go printNumber(i, &wg) } wg.Wait() } func printNumber(num int, wg *sync.WaitGroup) { defer wg.Done() fmt.Println(num) } ```
在上述代码中,我们使用`sync.WaitGroup`来等待所有的携程完成打印任务。在`printNumber`函数中,我们调用了`wg.Done()`来减少计数器的值。``` import ( "fmt" ) func main() { ch := make(chan int) go produceNumbers(ch) go consumeNumbers(ch) fmt.Scanln() } func produceNumbers(ch chan<- int) { for i := 0; i < 5; i++ { ch <- i } close(ch) } func consumeNumbers(ch <-chan int) { for num := range ch { fmt.Println(num) } } ```
在上述代码中,我们通过`make`函数创建了一个通道`ch`,并在`produceNumbers`函数和`consumeNumbers`函数中使用该通道来进行携程间的通信。`produceNumbers`函数将数字发送到通道中,而`consumeNumbers`函数从通道中读取并打印数字。