5 回复
我真是太傻了……我忘记把它作为goroutine调用了……感谢提醒
更多关于Golang求助:这段代码为什么无法运行?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
不用担心。提问总比不提问好。😄 找到答案后请随时"标记为已解决"。
谢谢……明白了……如何在不添加缓冲区的情况下实现。
还有一件事,为什么数据不能同时从通道中取出。WaitGroup 难道不允许并发地取出数据吗?
因为 c 是无缓冲的,许多 Go 协程试图向它写入数据,但由于通道中没有更多空间而阻塞。
由于你在所有"结果"发送到通道之前没有从 fanout 返回,你永远无法到达实际从 c 读取的代码。
这段代码无法运行是因为缺少了必需的包导入和主函数所在的包声明。在Go语言中,每个程序都需要明确声明所属的包,并且使用到的标准库包必须通过import语句导入。
以下是修正后的代码:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
主要问题说明:
- 缺少
package main声明 - Go程序必须指定包名,可执行程序必须使用main包 - 缺少
import "fmt"- 使用fmt包中的Println函数需要导入该包
修正后的代码可以正常编译和运行,输出:
hello world

