为了账号安全,请及时绑定邮箱和手机立即绑定

runtime.Gosched()

package main

import (
    "fmt"
    "runtime"
)

func main() {
    go fmt.Println("Go!")
    runtime.Gosched()
}

请问这个代码不执行println是什么原因呢

正在回答

3 回答

主协程(main函数程序块)执行完时,如果存在子协程(go语句程序块)没有被调用执行,那就会直接被丢弃。runtime.Gosched会激活子协程,但不会中断主协程,所以可能go语句没执行完时main协程就完成退出了

0 回复 有任何疑惑可以回复我~

尝试了一下,有时候执行有时候不执行,还是随机的,所以runtime.Gosched()到底做了什么(哭笑不得

0 回复 有任何疑惑可以回复我~
#1

BioCrossCoder

打个比方,你正在吃饭(执行main),调用runtime.Gosched是在吃饭时打开电视看一个电视剧(执行go语句);看电视不会中断你吃饭,电视剧没播完你就已经吃完饭了(go语句没执行完main就执行完了),这时候你直接去洗碗了(退出程序),那当然看不到这一集电视剧的结尾(go语句执行的结果)了。
2023-07-23 回复 有任何疑惑可以回复我~

不需要 go

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Go语言第一课
  • 参与学习       107795    人
  • 解答问题       148    个

Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础

进入课程

runtime.Gosched()

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信