GO语言自学_016_return_exit_goexit区别

代码
package main

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

/*
  GOEXIT:提前退出当前go程
  return:返回当前函数
  exit:退出当前进程
*/

func main() {
  // 匿名函数go程

  // 1、return
  go func() {
    returnTest()
    fmt.Println("子go程结束")
  }()
  fmt.Println("这是主go程")
  time.Sleep(5 * time.Second)
  fmt.Println("================================结束================================")

  // 2、goExitTest
  go func() {
    goExitTest()
    fmt.Println("子go程结束")
  }()
  fmt.Println("这是主go程")
  time.Sleep(5 * time.Second)
  fmt.Println("================================结束================================")

  // 3、osExitTest
  go func() {
    osExitTest()
    fmt.Println("子go程结束")
  }()
  fmt.Println("这是主go程")
  time.Sleep(5 * time.Second)
  fmt.Println("================================结束================================")
}

func returnTest() {
  fmt.Println("return测试:")
  fmt.Println("这是子go程内部的函数")
  // 返回并退出当前函数
  return
}

func osExitTest() {
  fmt.Println("os.Exit测试:")
  fmt.Println("这是子go程内部的函数")
  // 退出整个进程
  os.Exit(-1)
}

func goExitTest() {
  fmt.Println("runtime.Goexit测试:")
  fmt.Println("这是子go程内部的函数")
  // 退出整个进程
  runtime.Goexit()
}

结果
ASUS@DESKTOP-NFP9SLA MINGW64 /c/gowork/src
$ go run 015_go_exits.go
这是主go程
return测试:
这是子go程内部的函数
子go程结束
================================结束================================
这是主go程
runtime.Goexit测试:
这是子go程内部的函数
================================结束================================
这是主go程
os.Exit测试:
这是子go程内部的函数
exit status 0xffffffff

posted @ 2022-09-08 15:34  顺心无忧  阅读(113)  评论(0编辑  收藏  举报