循环中的Golang匿名函数-值作为参数传递的问题

循环中的Golang匿名函数-值作为参数传递的问题,go,closures,anonymous-function,Go,Closures,Anonymous Function,我读过各种各样的页面,例如其中概述了在循环中使用闭包和goroutine的问题。因此,我将我的原始循环编写如下: for outstanding < threads { ttl += 1; outstanding += 1; go func (ttl int, results chan Result) { results <- pw.SendTTL(ttl, dest) results <- pw.Recv(3)

我读过各种各样的页面,例如其中概述了在循环中使用闭包和goroutine的问题。因此,我将我的原始循环编写如下:

for outstanding < threads {
    ttl += 1;
    outstanding += 1;
    go func (ttl int, results chan Result) {
        results <- pw.SendTTL(ttl, dest)
        results <- pw.Recv(3)
    }(ttl, results)
}
用于未完成的<线程{
ttl+=1;
优秀+=1;
go func(ttl int,结果与结果){

结果在写出所要求的示例时,我想我意识到了我的问题所在。在尝试共享套接字时,各种go例程相互碰撞TTL设置

问题撤回;)


编辑:澄清一下,在这两种情况下,正确的值实际上都被传递给了例程。这是一个潜在的资源共享问题。

你能做一个独立的例子吗()?你期望发生什么,你到底看到了什么?
for i := ttl; outstanding < threads; i++ {
    go func (ttl int, results chan Result) {
        results <- pw.SendTTL(ttl, dest)
        results <- pw.Recv(3)
    }(i, results)
    outstanding++;
}