虽然SayHello()按预期执行,但goroutine没有打印任何内容.
package main
import "fmt"
func SayHello() {
for i := 0; i < 10 ; i++ {
fmt.Print(i, " ")
}
}
func main() {
SayHello()
go SayHello()
}
Run Code Online (Sandbox Code Playgroud) 在某些情况下,我无法解释猩猩的行为。我尝试举一个简单的例子。这是我自己的文件“ main.go”:
package main
import (
"fmt"
)
func print1() {
fmt.Println("print 1")
}
func print2() {
fmt.Println("print 2")
}
func print3() {
fmt.Println("print 3")
}
func main() {
for i:=0; i<3; i++ {
go print1()
}
for i:=0; i<3; i++ {
go print2()
}
for i:=0; i<3; i++ {
go print3()
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这3个功能(每个循环中被调用3次)同时执行,结果打印数字的顺序是不可预测的。我不明白为什么该程序可以编译并执行而没有任何错误,但是它在控制台上什么都没打印!实际上,好像在for内部的函数调用未执行。如果删除这些go子句,则打印内容将显示在控制台上。我得出的结论是,并行线程无权在控制台上打印。如何查看具有实际“并发”行为的这些打印件?