我的程序中有多个goroutine,每个goroutine都进行调用而fmt.Println没有任何显式同步。这样安全吗(即,每行将单独出现而不会破坏数据),还是我需要创建另一个带有同步的goroutine来专门处理打印?
fmt.Println
不,即使您有时可能没有发现任何麻烦,也不安全。IIRC,fmt软件包试图处于安全状态,因此可能会发生某种混合,但希望不会导致进程崩溃。
这是一个更通用的Go文档规则的实例:除非另有指定或从上下文中可以明显看出,否则对于并发访问而言,事物并不安全。
可以使用带有少量初始设置的日志包来获得fmt.Print *功能的子集的安全版本。