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)

	}

}
相关推荐
计算机毕设指导67 分钟前
基于SpringBoot共享汽车管理系统【附源码】
java·spring boot·后端·mysql·spring·汽车·intellij idea
wjs202416 分钟前
CentOS Docker 安装
开发语言
阿熊不会编程43 分钟前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
小牛itbull44 分钟前
Mono Repository方案与ReactPress的PNPM实践
开发语言·前端·javascript·reactpress
jokerest1231 小时前
pwn——test_your_nc1——测试
开发语言·php
碧海蓝天20221 小时前
接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?
开发语言·c++·python
周杰伦fans1 小时前
Java与C#
java·开发语言·c#
SAP学习成长之路2 小时前
SAP 零售方案 CAR 系统的介绍与研究
大数据·开发语言·sap·abap·零售·car·bapi
fcopy2 小时前
Golang项目:实现生产者消费者模式
缓存·golang
A_Tai23333332 小时前
MyBatis高级扩展
java·开发语言·mybatis