前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go 中channel的一个用法

go 中channel的一个用法

原创
作者头像
嘟嘟爱吃瓜
发布2023-06-08 17:41:15
1180
发布2023-06-08 17:41:15
举报
文章被收录于专栏:区块链相关

记录一个channel的用法,感觉挺有意思的。

代码语言:go
复制
package main

import (
	"fmt"
	"time"
)

type SomeStr struct {
	val     int
	process chan struct{}
}

func SendTask(taskCh chan SomeStr) {
	done := make(chan struct{})
	taskCh <- SomeStr{val: 100, process: done}
	fmt.Println("waitting done")
	<-done
	fmt.Println("task is over")
}

func main() {
	taskCh := make(chan SomeStr)
	go SendTask(taskCh)

	for {
		select {
		case v := <-taskCh:
			fmt.Println("recv val:", v.val)
			close(v.process)
			time.Sleep(time.Second)
			return
		}
	}
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档