matrix - 使用 channel 进行矩阵和盒子计数

标签 matrix go channel

此代码来自最流行的go matrix包https://github.com/skelterjohn/go.matrix/blob/go1/util.go

我用谷歌搜索了这个函数,似乎它是用于计算分形维数的。但在这个包中,这个函数从未被使用过,所以我很难理解这一点。

func countBoxes(start, cap int) chan box {
        ints := make(chan box)
        go func() {
                for i := start; i < cap; i++ {
                        ints <- i
                }
                close(ints)
        }()
        return ints
}

当我们这里只有一个匿名函数时,为什么还需要 goroutine? 有人知道这个函数在矩阵工作方面的作用吗?

提前致谢。

最佳答案

它返回一个带有 cap 的 channel - 开始排队整数事件。 (即您可以“阅读” 开始,开始+1..,从 channel 上盖,然后关闭)。

如果您仔细研究代码,它会使用类似的构造来为稀疏矩阵的非零条目的索引创建迭代器。在sparse.go 中查找。

在我能找到的代码中没有使用它,它可能只是为了测试 这个想法。

关于matrix - 使用 channel 进行矩阵和盒子计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746409/

相关文章:

go - 添加到 CookieJar 会导致 cookie 数据被清除

go - channel 缓冲区比 Go 中的预期多取一个值

go - 在一定时间内从 channel 阅读的惯用方式

vb.net - 从单应性中提取变换和旋转矩阵?

c++ - 是否可以使用手动输入制作 OpenCV 矩阵?

parallel-processing - 数据通道关闭时 Goroutines 不退出

go - 关闭未知长度的 channel

c++ - 如何为我的非静态转置函数实现 matrix.Transpose()?

r - 按 R 中的列匹配 ID 追加列

go - 如何使用kubernetes apiserver获取CNI类型?