代码如下:

func main() {
go func() {
fmt.Println("run goroutine in closure")
}()
}

原因分析:

go func() { ... }() 启动了一个新的协程(goroutine),但主函数 main() 在启动协程后立即结束。

Go 程序中,只要主协程(main goroutine)退出,所有其他还未完成的协程都会被强制终止,不会继续执行。

所以,fmt.Println("run goroutine in closure") 很可能还没来得及执行,主程序就已经退出了,因此你看不到打印结果。

解决方法:

import (
"fmt"
"time"
) func main() {
go func() {
fmt.Println("run goroutine in closure")
}() time.Sleep(100 * time.Millisecond) // 主协程等待,保证子协程有机会执行
}

或者使用 sync.WaitGroup

import (
"fmt"
"sync"
) func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() {
fmt.Println("run goroutine in closure")
wg.Done()
}()
wg.Wait() // 等待协程执行完毕
}
###这样就能保证协程中的打印语句被执行。

go学习笔记:go func() { ... }() 启动了一个新的协程,为什么go 后面的函数没有打印?的更多相关文章

  1. Linux内核分析第六周学习笔记——分析Linux内核创建一个新进程的过程

    Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  2. Android学习笔记——Activity的启动和创建

    http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html Android Activity学习笔记——Activity的启动和创建 ...

  3. openstack学习笔记一 虚拟机启动过程代码跟踪

    openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...

  4. go语言,golang学习笔记4 用beego跑一个web应用

    go语言,golang学习笔记4 用beego跑一个web应用 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ 更新的命令是加个 -u 参数,g ...

  5. QML学习笔记(五)— 做一个简单的待做事项列表

    做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...

  6. ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录

    放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...

  7. Android学习笔记(一)——新建一个项目

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 1.打开Android Studio时出现以下界面,点击”start a new Android Studio ...

  8. Android学习笔记(二)——探究一个活动

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动(Activity)是最容易吸引到用户的地方了,它是一种可以包含用户界面的组件,主要用于和用户进行交互.一 ...

  9. Neo4j学习笔记(1)——使用API编写一个Hello World程序

    项目的创建及配置 因为Neo4j依赖的jar包比较多,所以推荐使用Maven来管理. 首先创建一个Maven Project,添加依赖: <dependency> <groupId& ...

  10. Hadoop源码学习笔记之NameNode启动场景流程三:FSNamesystem初始化源码剖析

    上篇内容分析了http server的启动代码,这篇文章继续从initialize()方法中按执行顺序进行分析.内容还是分为三大块: 一.源码调用关系分析 二.伪代码执行流程 三.代码图解 一.源码调 ...

随机推荐

  1. 第六章: SEO与交互指标

    第6章: SEO与交互指标 在当今的SEO环境中,Google越来越重视用户交互指标,如页面停留时长.交互性能等.本章将深入探讨如何优化网页速度和用户交互体验,以提升SEO效果和用户满意度. 1. G ...

  2. 基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程

    前言:多模态虚拟主播的技术革命 在AI内容生成领域,虚拟主播技术正经历从2D到3D.从固定模板到个性化定制的跨越式发展.本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播 ...

  3. 异常分析 JedisConnectionException: java.net.SocketTimeoutException: Read timed out

    问题描述   测试Redis分布式锁的时候,如果一次执行大量数据,系统会报出如下异常: JedisConnectionException: java.net.SocketTimeoutExceptio ...

  4. netty发送socket短连接请求,自定义报文头

    package com.chinaums.japi.util; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; ...

  5. python终端中使用pip指令下载模块显示SyntaxError: invalid syntax解决办法

    今天学习爬虫导入模块时遇到以下错误,即语法错误 >>> pip bs4 File "<stdin>", line 1 pip bs4 ^^^ Synt ...

  6. CAN304 W3

    CAN304 W3 Message authentication code Message integrity 我们一直关注确保通信的保密性. Integrity:确保接收到的消息来自预期方,并且未被 ...

  7. 【前端AI实践】Lingma:使用工具辅助开发让你停不下来

    如果你用过 GitHub Copilot,那你对 AI 编程助手应该不陌生.而 Lingma 是阿里云推出的一款专注于编程场景的智能编码助手. 它深度集成在 VS Code.JetBrains 等主流 ...

  8. 不得不说一下vite

    vite简介 Vite 是一个由原生 ESM 驱动的 Web 开发构建工具.在开发环境下基于浏览器原生 ES imports 开发,在生产环境下基于 Rollup 打包. vite作用 快速的冷启动: ...

  9. VKProxy新增速率限制功能

    VKProxy 是使用c#开发的基于 Kestrel 实现 L4/L7的代理(感兴趣的同学烦请点个github小赞赞呢) 目前新添加了速率限制(限流)功能 什么是速率限制? 速率限制是限制可以访问的资 ...

  10. 一文看懂——SimSolid的优势

    在当今日益复杂的工程设计领域,大型装配体的分析变得愈发重要.装配体是由多个零件.部件或子装配体按照一定规则和技术要求组合而成的整体,其性能的好坏直接影响到整个产品的质量和可靠性. 然而,传统的有限元分 ...