Go语言 提前退出go程

本篇文章内容为Go语言中 提前退出Go程的三种方式介绍及代码示例。

目录

提前退出go程方式

[Return 使用示例](#Return 使用示例)

[Exit 使用示例](#Exit 使用示例)

[Goexit 使用示例](#Goexit 使用示例)

总结


提前退出go程方式

GOEXIT:提前退出当前go程

return:返回当前函数

exit : 退出当前进程

Return 使用示例

在子go程中的匿名函数中使用return后,会返回子go程中,继续向下执行。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   "time"
)

func main() {
   go func() {
      func(){
         fmt.Println("这是子go进程内部函数!")
         return // 返回当前函数
      }()
      fmt.Println("子进程结束!")
   }()

   fmt.Println("这是主go程!")
   time.Sleep(3 * time.Second)
   fmt.Println("结束!")
}

运行结果:

bash 复制代码
这是主go程!
这是子go进程内部函数!
子进程结束!
结束!

Exit 使用示例

在子go程中的匿名函数中使用exit后,会退出当前执行子go进程,不在继续打印。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   "os"
   "time"
)

func main() {
   go func() {
      func(){
         fmt.Println("这是子go进程内部函数!")
         // return // 返回当前函数
         os.Exit(-1) // 退出进程
      }()
      fmt.Println("子进程结束!")
   }()

   fmt.Println("这是主go程!")
   time.Sleep(3 * time.Second)
   fmt.Println("结束!")
}

运行结果:

bash 复制代码
这是主go程!

这是子go进程内部函数!

exit status 0xffffffff

Goexit 使用示例

在子go程中的匿名函数中使用goexit后,会退出当前的子进程执行。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   //"os"
   "runtime"
   "time"
)

func main() {
   go func() {
      func(){
         fmt.Println("这是子go进程内部函数!")
         // return // 返回当前函数
         // os.Exit(-1) // 退出当前子go进程
         runtime.Goexit() //
      }()
      fmt.Println("子进程结束!")
   }()

   fmt.Println("这是主go程!")
   time.Sleep(3 * time.Second)
   fmt.Println("结束!")
}

不会打印,提前退出当前go程。

执行结果:

bash 复制代码
这是主go程!

这是子go进程内部函数!

结束!

总结

本篇文章内容为Go语言中 提前退出Go程的三种方式介绍及代码示例。

相关推荐
小蜗牛编程实录4 分钟前
一文搞懂分布式事务:从理论到实践方案
分布式·后端
小蜗牛编程实录5 分钟前
深入理解网络 IO:从基础模型到多路复用技术
后端
Ekreke6 分钟前
一次Nginx 403 的问题排查
后端
励志不掉头发的内向程序员16 分钟前
【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
linux·运维·服务器·开发语言·学习
梵得儿SHI23 分钟前
Java 反射机制深度解析:从对象创建到私有成员操作
java·开发语言·class对象·java反射机制·操作类成员·三大典型·反射的核心api
沐知全栈开发26 分钟前
Foundation 折叠列表
开发语言
绝无仅有37 分钟前
面试真实经历某商银行大厂数据库MYSQL问题和答案总结(二)
后端·面试·github
绝无仅有38 分钟前
通过编写修复脚本修复 Docker 启动失败(二)
后端·面试·github
..Cherry..41 分钟前
【java】jvm
java·开发语言·jvm
老K的Java兵器库1 小时前
并发集合踩坑现场:ConcurrentHashMap size() 阻塞、HashSet 并发 add 丢数据、Queue 伪共享
java·后端·spring