我正在尝试在Go中编写一个函数,该函数采用带有目录URL的JSON并执行BFS在该目录中查找文件。 当我找到一个作为目录的JSON时,代码将创建一个URL,并应将该URL放入队列。 当我尝试在循环的append()中创建结构时,出现错误。

您的ContentResp类型是切片,而不是结构,但是当您使用复合文字尝试为其创建值时,会将其视为结构:

更确切地说,它是一种类型的切片,是匿名结构。创建匿名结构的值是不愉快的,因此您应该创建(名称)仅是struct的类型,并使用其中的一部分,例如:

进一步的问题:

让我们检查一下这个循环:

上面的代码遍及一个切片,并且在其中试图将元素附加到切片上。与此相关的2个问题:append()返回必须存储的结果(它甚至可能必须分配一个新的,更大的支持数组并复制现有元素,在这种情况下,结果片将指向一个与原来完全不同的数组一个应该被放弃)。所以应该这样使用:

第二:您不应该更改所覆盖的范围。 for ... range一次(最多)计算一次范围表达式,因此您对其进行更改(向其中添加元素)将对迭代器代码无效(它将不会看到slice头更改)。

如果您有"任务"要完成的情况,但是在执行过程中可能会出现新任务(递归地完成),那么通道是一个更好的解决方案。看到以下答案可以了解渠道:golang渠道有什么用途?