首页 > 其他分享 >golang 只读chan 测试

golang 只读chan 测试

时间:2023-05-19 17:23:38浏览次数:43  
标签:myGoroutine 测试 只读 chan golang func

package main

import (
	"fmt"
	"time"
)

func myGoroutine(stopCh <-chan struct{}) {
	// 在协程中监听停止信号
	for {
		select {
		case <-stopCh:
			// 接收到停止信号,执行清理操作并退出
			fmt.Println("cleanup")
			return
		default:
			// 继续正常的协程逻辑
			fmt.Println("doWork")
		}
	}
}

func main() {
	// 创建一个用于发送停止信号的通道
	stopCh := make(chan struct{})

	// 启动协程,并传入停止信号通道
	go myGoroutine(stopCh)

	// 在需要停止协程的时候,向通道发送停止信号
	time.Sleep(time.Second)
	stopCh <- struct{}{}

	// 等待协程退出
	time.Sleep(time.Second)
}

标签:myGoroutine,测试,只读,chan,golang,func
From: https://www.cnblogs.com/securitybob/p/17415788.html

相关文章

  • golang 指针判断是否为空
    golang判断指针是否为空的方法:1、知道类型的情况下,自然是可以使用类型断言后判空。如ai,ok:=i.(*int),之后判断ai==nil。2、不知道是何种类型的指针,就只好借助反射了vi:=reflect.ValueOf(i),后使用vi.IsNil()来判断。但如果i里放到不是一个指针,调用IsNil会出异常,则可能要写......
  • python使用exchangelib读取、保存exchange邮件
    importosfromdatetimeimportdatetimeimportpytzfromexchangelibimportCredentials,Account,Configuration,DELEGATE,Q,FileAttachmentdefreceived_exchange_message():"""接收exchange邮件,保存邮件到本地:return:""......
  • 从零玩转设计模式之简单工厂设计模式-jiandangonchangmoshi
    title:从零玩转设计模式之简单工厂设计模式date:2022-12-0811:31:19.472updated:2022-12-1123:03:34.805url:https://www.yby6.com/archives/jiandangonchangmoshicategories:-设计模式tags:-设计模式简单工厂模式是一种创建型设计模式,用于创建单个对象.它主......
  • 从零玩转设计模式之工厂方法设计模式-gonchangfangfamoshi
    title:从零玩转设计模式之工厂方法设计模式date:2022-12-0813:22:13.669updated:2022-12-1123:03:22.379url:https://www.yby6.com/archives/gonchangfangfamoshicategories:-设计模式tags:-设计模式什么是工厂方法模式?“工厂方法模式”是对简单工厂模式的进......
  • golang 内存 stats 字段解释
    字段解释样例Alloc当前堆中已经分配给对象使用所占用的空间字节数322952TotalAlloc累计堆中已经分配给对象使用所占用的空间字节数,只会增长,不会减少29511472Sys总共从OS申请的字节数,包含运行时的heap、stack和其他内部数据结构的总和,它是虚拟内存空间。不一......
  • github报错“ssh_exchange_identification: Connection closed by remote host fatal:
    解决方式:不确定是否为密钥过期还是C:\Users\John\.ssh文件夹下的config文件中没有添加github的host。总之,所有的尝试如下:(1)重新生成公钥和私钥。打开gitbash,输入以下命令获取自己github的email。gitconfiguser.email 生成ssh私钥和公钥ssh-keygen-trsa-......
  • Golang -embed结合viper打包静态文件
    代码含有viper独立方式和goembed方式packagemainimport("bytes""embed""fmt""time""github.com/spf13/viper")//go:embedconfig.yamlvarf[]bytefuncmain(){//config:=viper.New()......
  • Golang高性能编程笔记--字符串拼接
    Golang中引入五种字符串拼接方法,分别如下:1.+拼接法2.fmt.Sprintf()3.strings.Builder4.bytes.Buffer5.[]byte代码示例,这里将根据《Go语言高性能编程》中的一节,来看一下这五种具体的方法:packagemainimport( "bytes" "fmt" "math/rand" "strings......
  • Golang - go:embed
    总结GoEmbed有什么用处能够在命令行工具里嵌入WEBgoinstall快速安装,启动web该web可以提供生成代码的平台该web可以提供例如jsontostruct等数据结构转换可以大大提高Go的工具链能力能够将前端资源打包到一个二进制包里,方便部署和安装静态资源访问没有io操作,速度非常......
  • VScode下golang 同一个包下不同文件之间函数调用问题
    VScode下golang同一个包下不同文件之间函数调用问题1.问题发现最近在vscode上学习golang的相关开发,发现这样一个问题:同文件夹下的两个文件,在都处于main包的情况下,无法在mian()里直接调用另一个文件中的函数,会报错:undefined。2.原因分析从语法层面上似乎并无问题,但是Go中main......