Loops 是否可以从外部功能停止股票代码/goroutine?

Loops 是否可以从外部功能停止股票代码/goroutine?,loops,go,concurrency,goroutine,Loops,Go,Concurrency,Goroutine,我有一个例子: 主程序包 进口( “fmt” “时间” ) func main(){ 股票代码:=time.NewTicker(5*time.s) 为了{ 挑选{ 病例此处: 主程序包 进口( “fmt” “操作系统” “操作系统/信号” “系统调用” “时间” ) 这能回答你的问题吗?你可以用case,ok:=@ttrasn,no@hyz但是我如何从另一个函数调用ticker.Stop()?关闭频道的问题与此相同,我可以在另一个函数中关闭它吗?谢谢您的帮助replies@Pedro当然,您可以

我有一个例子:

主程序包
进口(
“fmt”
“时间”
)
func main(){
股票代码:=time.NewTicker(5*time.s)
为了{
挑选{
病例此处:

主程序包
进口(
“fmt”
“操作系统”
“操作系统/信号”
“系统调用”
“时间”
)

这能回答你的问题吗?你可以用
case,ok:=@ttrasn,no@hyz但是我如何从另一个函数调用ticker.Stop()?关闭频道的问题与此相同,我可以在另一个函数中关闭它吗?谢谢您的帮助replies@Pedro当然,您可以将ticker传递给另一个函数并调用
ticker.Stop()
在那里。同样,您可以
关闭(频道)
在另一个函数中。您也可以在stop中关闭频道,而不是向频道发送一个空结构。在这段代码中,for循环是无关的。一个解决方案涉及一个可以从主程序包的任何函数范围访问到的全局计时器。@mh cbon是的,同意。@shmsr感谢您的回答!看起来不错,但有一个问题:您使用了吗d时间。之后返回一个空结构到通道。有没有方法可以在任何时间点发送该结构?例如:在您的代码中,您在启动go例程时生成stop函数。但是,我不知道要等多久才能停止它…有时我会让它运行3小时,有时10小时。我需要做的是调用停止函数“正在运行”(例如使用控制台命令),这将停止goroutine的运行。如果我没有正确理解您的示例,很抱歉。@shmsr是的,这就是我想要的!一种发送信号停止goroutine的方法,正是这样!