If statement go-如何使用golang goroutine、select和if语句返回?
我想在goroutine中做一个“如果”的陈述。 问题:如何从10变成10If statement go-如何使用golang goroutine、select和if语句返回?,if-statement,select,go,return,goroutine,If Statement,Select,Go,Return,Goroutine,我想在goroutine中做一个“如果”的陈述。 问题:如何从10变成10 var jr = make(chan int, 10) var clients = 10 // The number of clients varies with time. func rpcMethod(num int) { time.Sleep(time.Duration(rand.Intn(int(time.Second)))) jr <- num } func postHandler(n
var jr = make(chan int, 10)
var clients = 10 // The number of clients varies with time.
func rpcMethod(num int) {
time.Sleep(time.Duration(rand.Intn(int(time.Second))))
jr <- num
}
func postHandler(num int) {
// wait RPC data
for {
select {
case msg := <-jr:
{
if msg == num {
fmt.Println(num, "hello from", msg)
return
}
}
}
}
}
func main() {
for i := 0; i < clients; i++ {
go postHandler(i)
go rpcMethod(i)
}
fmt.Scanln()
}
var jr=make(chan int,10)
var clients=10//客户端的数量随时间而变化。
func rpcMethod(num int){
time.Sleep(time.Duration(rand.Intn(int(time.Second)))
jr在postHandler
从频道jr
接收到msg
后,该值不再在频道中,其他postHandler
无法找到。频道不广播
如果它不等于num
或完全重新构造代码。在postHandler
从频道jr
接收msg
后,该值不再在频道中,其他postHandler
可以找到。频道不广播
如果它不等于num
,或者完全重新构造代码。好的,存在多个问题
首先也是最重要的是,它不起作用,因为当从某个频道读取某个内容时,它会消失(它不是广播,只有一个线程可以读取消息)
因此,为了使代码能够伪工作,您可以执行以下操作:
if msg == num {
fmt.Println(num, "hello from", msg)
return
}else {
// not my number, put it back in the channel
jr <- num
}
如果msg==num{
fmt.Println(num,“hello from”,msg)
返回
}否则{
//不是我的号码,把它放回频道
jr好的,有多个问题
首先也是最重要的是,它不起作用,因为当从某个频道读取某个内容时,它会消失(它不是广播,只有一个线程可以读取消息)
因此,为了使代码能够伪工作,您可以执行以下操作:
if msg == num {
fmt.Println(num, "hello from", msg)
return
}else {
// not my number, put it back in the channel
jr <- num
}
如果msg==num{
fmt.Println(num,“hello from”,msg)
返回
}否则{
//不是我的号码,把它放回频道
jr可能我做错了什么?我尝试在Post请求中传输数据A1,并将其处理到第三方服务,其答案将以A2,B2的形式出现。然后我比较==A1 A2并在Post B2中写入。可能我做错了什么?我尝试在Post请求中传输数据A1,并将其处理到第三方服务,答案是A2,B2。然后我比较==a1a2,写在帖子B2中。有趣的是另一个版本。有趣的是另一个版本。