go语言(十八)---- goroutine

一、goroutine

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {

	//用go创建承载一个形参为空,返回值为空的一个函数

	go func() {
		defer fmt.Println("A.defer")

		func() {
			defer fmt.Println("B.defer")
			//退出当前goroutine
			fmt.Println("B")
		}()
		fmt.Println("A")
	}()

	//死循环
	for  {
		time.Sleep(1 * time.Second)

	}

}

二、退出方式

1、return

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {

	//用go创建承载一个形参为空,返回值为空的一个函数

	go func() {
		defer fmt.Println("A.defer")
		return
		func() {
			defer fmt.Println("B.defer")
			//退出当前goroutine
			fmt.Println("B")
		}()
		fmt.Println("A")
	}()

	//死循环
	for  {
		time.Sleep(1 * time.Second)

	}

}

2、用runtime.Goexit()

go 复制代码
package main

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

func main() {

	//用go创建承载一个形参为空,返回值为空的一个函数

	go func() {
		defer fmt.Println("A.defer")
		//return
		func() {
			defer fmt.Println("B.defer")
			//退出当前goroutine
			runtime.Goexit()
			fmt.Println("B")
		}()
		fmt.Println("A")
	}()

	//死循环
	for  {
		time.Sleep(1 * time.Second)

	}

}

三、传入一个形参

go 复制代码
package main

import (
	"fmt"
	"time"
)

func main() {

	//用go创建承载一个形参为空,返回值为空的一个函数

	//go func() {
	//	defer fmt.Println("A.defer")
	//	//return
	//	func() {
	//		defer fmt.Println("B.defer")
	//		//退出当前goroutine
	//		runtime.Goexit()
	//		fmt.Println("B")
	//	}()
	//	fmt.Println("A")
	//}()

	//传入一个有参数的
	go func(a int,b int) bool {
		fmt.Println("a = ",a,"b = ",b)
		return true
	}(10,20)

	//死循环
	for  {
		time.Sleep(1 * time.Second)

	}

}
相关推荐
漫路在线15 分钟前
JS逆向-某易云音乐下载器
开发语言·javascript·爬虫·python
小辉懂编程44 分钟前
C语言:51单片机实现数码管依次循环显示【1~F】课堂练习
c语言·开发语言·51单片机
醍醐三叶2 小时前
C++类与对象--2 对象的初始化和清理
开发语言·c++
Magnum Lehar3 小时前
3d游戏引擎EngineTest的系统实现3
java·开发语言·游戏引擎
就叫飞六吧3 小时前
Spring Security 集成指南:避免 CORS 跨域问题
java·后端·spring
Mcworld8573 小时前
java集合
java·开发语言·windows
成功人chen某3 小时前
配置VScodePython环境Python was not found;
开发语言·python
海绵宝宝贾克斯儿4 小时前
C++中如何实现一个单例模式?
开发语言·c++·单例模式
史迪仔01124 小时前
[python] Python单例模式:__new__与线程安全解析
开发语言·python·单例模式
冼紫菜4 小时前
[特殊字符]CentOS 7.6 安装 JDK 11(适配国内服务器环境)
java·linux·服务器·后端·centos