gpt4 book ai didi

go - 这段代码中的第二个 goroutine 在哪里,从 channel 下的 gobyexample 复制

转载 作者:行者123 更新时间:2023-12-01 22:40:41 25 4
gpt4 key购买 nike

如 gobyexample https://gobyexample.com/channels 中所述, 它说

当我们运行程序时,“ping”消息通过我们的 channel 成功地从一个 goroutine 传递到另一个 goroutine。 但在我看来,就像我们在代码中只有一个 go 例程,即 go func (text string) { messages <- "ping"}()所以我不知道“ping”消息来自哪个 goroutine 以及它放在哪个 goroutine

package main

import "fmt"

func main() {
messages := make(chan string)
go func (text string) { messages <- "ping"}()

msg := <-messages
fmt.Println(msg)
}

最佳答案

Go 程序从一个 goroutine 开始。每个go声明增加了另一个。所以,在你的程序中,有两个:一个从 main() 开始。开始,以及第一个在到达 go func ... 行时开始的。

func main() {
messages := make(chan string) // goroutine 1
go func (text string) {
messages <- "ping" // goroutine 2
}() // goroutine 1 starting goroutine 2

msg := <-messages // goroutine 1
fmt.Println(msg) // goroutine 1
}

关于go - 这段代码中的第二个 goroutine 在哪里,从 channel 下的 gobyexample 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60097217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com