/ 程序描述:探索golang中goroutine的用法 /
package main
import (
"fmt"
"time"
)
func saySomething(str string) {
for i := 0; i<5; i++ {
time.Sleep(time.Millisecond * 1000)
fmt.Println(str)
}
}
func main() {
// 启动一个goroutine线程
go saySomething("Hello")
saySomething("World")
}
/ 关于这段代码的输出有很多问题,下面先问一个比较重要的问题 ?:为什么此时的输出结果少了一个"Hello" /
有疑问加站长微信联系(非本文作者)

小伙伴们,拜托了~
主进程结束后,子进程也跟着结束了。这段代码中应该是最后一次打印的时间是出现在主进程结束后的,所以没打印是正常的。这个文档里面有详细的说明 https://talks.golang.org/2012/concurrency.slide#1
谢谢你的回答,我大概知道了--是因为主进程结束了,子进程也跟着结束了。但是Java语言中就有--主进程main结束之后子进程还会继续执行。不同语言有还真是有点不同啊,看来要熟悉不同语言的“规则”了。底层开发果真牛逼,能够自己制定规则,应用层开发还是有点low啊!
什么呀,主进程退出了,子进程根本没有机会执行。Java 也会如此