If statement go-如何使用golang goroutine、select和if语句返回?

If 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

我想在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(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中。有趣的是另一个版本。有趣的是另一个版本。