/*
程序描述:探索golang中goroutine的用法
*/
```go
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
#2
更多评论
谢谢你的回答,我大概知道了--是因为主进程结束了,子进程也跟着结束了。但是Java语言中就有--主进程main结束之后子进程还会继续执行。不同语言有还真是有点不同啊,看来要熟悉不同语言的“规则”了。底层开发果真牛逼,能够自己制定规则,应用层开发还是有点low啊!
#3