golang可以在goroutine中往channel中追加数据吗?

我写了一个类似于网站目录扫描器一样的东西,核心思路是根据线程数量发射多个goroutine,在goroutine函数里面用for range不断的接受来自一个channel里面的url,准备好一个扫描字典,然后用head方法探测该url下的目录或者文件是否存在,如果状态码是200或者403并且该url本身还是一个目录,那么继续把这个目录追加到channel里面继续扫描,就有点类似于爬虫一级一级往深处抓取数据一样。

但是实际执行扫描如图所示的scantest目录的时候我发现最多扫描两级目录就停止了,不会再往更深处扫描,比如说admin/admin这个目录能扫到,但是admin/admin/admin就扫不到了

代码在这里,哪位高手帮忙看看啊?
https://github.com/cw1997/web...
图片描述

阅读 2.7k
1 个回答

没太多时间看你的代码,不好意思,我写了个简单的测试代码,你可以参考一下

var ch = make(chan string, 10)

func TestCh(t *testing.T) {
    go func() {
        for {
            for c1 := range ch {
                fmt.Println(c1)
            }
        }
    }()

    func() {
        for i := 0; i < 10; i++ {
            ch <- FromInt(i)
            time.Sleep(1 * time.Second)
        }
    }()
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题