gpt4 book ai didi

go - 链式函数如何作为 goroutines 执行?

转载 作者:IT王子 更新时间:2023-10-29 00:51:27 26 4
gpt4 key购买 nike

给定this playground :

package main

import "fmt"

func main() {
go oneFunc().anotherFunc()
}

func oneFunc() something {
fmt.Println("oneFunc")
return something{}
}

type something struct{}

func (s something) anotherFunc() {
fmt.Println("anotherFunc")
}

为什么输出是:

oneFunc

并且永远不会打印“anotherFunc”?

最佳答案

anotherFunconeFunc 返回一个值之前不会执行。因此,程序在 anotherFunc 能够运行之前退出。在 main 退出之前,您需要等待 anotherFunc 运行。

您可以通过 Go channel 执行此操作。 例如:

http://play.golang.org/p/dWoLB9afSj

package main

import "fmt"

func main() {
ch := make(chan int)
go oneFunc(ch).anotherFunc()
fmt.Println("Waiting...")
<-ch
fmt.Println("Done.")
}

func oneFunc(ch chan int) something {
fmt.Println("oneFunc")
return something{ch}
}

type something struct{
ch chan int
}

func (s something) anotherFunc() {
fmt.Println("anotherFunc")
s.ch <- 1
}

关于go - 链式函数如何作为 goroutines 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800426/

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