004 Golang-channel-practice 左右括号匹配

第四题 左右括号打印

一个协程负责打印“(”,一个协程负责打印“)”,左右括号的数量要匹配。在这道题目里,我在main函数里进行了一个死循环。会产生一个随机数,随机数就是接下来要打印的左括号的数量。

例如:((((()))))、(())、()。这样是正确的。一个左括号要匹配一个右括号。数量要对上~

())、((())。一看就左右不平衡,这就是错的!

在这里,我们运用了“空结构体”,这个空结构体是用来“占位置”的。A协程打印了多少个左括号,A协程就要往channel传递多少个空结构体,B协程再根据channel中空结构体的数量,来打印右括号

 

package main
import ("fmt""math/rand""sync""time"
)
func producer(c chan struct{}, times int) {defer close(c)for i := 0; i < times; i++ {fmt.Print("(")c <- struct{}{}}
}
func consumer(c chan struct{}, wg *sync.WaitGroup) {defer wg.Done()for range c {fmt.Print(")")}
}
func main() {rand.Seed(time.Now().UnixNano())for {times := rand.Intn(10) + 1c := make(chan struct{})var wg sync.WaitGroupgo producer(c, times)// 启动多个消费者 goroutinefor i := 0; i < times; i++ {wg.Add(1)go consumer(c, &wg)}wg.Wait()}
}

来看看输出!

5a24b2238ceb4f66841111559fd1743b.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决elementUI或elementPlus的按钮点击后需要失去焦点才能恢复原本样式问题

废话不多说直接上代码&#xff0c;只需要在button中添加如下代码即可 focus"(e) > e.target.blur()"

【大厂秘籍】 - Redis持久化篇

创作不易&#xff0c;你的关注分享就是博主更新的最大动力&#xff0c; 每周持续更新 微信搜索【 企鹅君】关注还能领取学习资料喔&#xff0c;第一时间阅读(比博客早两到三篇) 求关注❤️ 求点赞❤️ 求分享❤️ 对博主真的非常重要 企鹅君原创&#xff5c;GitHub开源项目gith…

[自动驾驶算法][从0开始轨迹预测]:一、坐标和坐标系变换

既然要从0开始轨迹预测&#xff0c;那从哪开始写起呢&#xff1f;回想下自己的学习历程&#xff0c;真正有挑战性的不是模型结构&#xff0c;不是繁琐的训练和调参&#xff0c;而是数据的制作&#xff01;&#xff01;&#xff01; 笔者自认为不是一个数学基础牢固的人&#xf…

如何使用SVN查看旧版本

和目录 第一步&#xff1a;打开SVN客户端 第二步&#xff1a;浏览历史版本 第三步&#xff1a;还原历史版本 结论 Subversion (缩写为SVN)是一种常用的版本控制系统&#xff0c;它可以帮助团队协作开发软件项目。除了基本的版本控制功能外&#xff0c;SVN还提供了许多其他功…

AutoCAD保存打开新建等操作变成命令行

文章标签没cad&#xff0c;就设了个3d 变成命令行的表现形式 如图点“另存为”后的样子&#xff1a; 如图点“打开”后的样子&#xff1a; 改回图形界面 键入filedia&#xff1a; 空格确认后&#xff0c;输入1&#xff0c;再空格确认&#xff1a; 图形界面回来了&#xff1a…

Linux/SwagShop

Enumeration nmap 仍然一样&#xff0c;先使用nmap探索目标开放端口情况 看到开启了22端口和80端口&#xff0c;还是一样的&#xff0c;先从80端口开始探索&#xff0c;从nmap给出的结果&#xff0c;我们可以看到有一个域名&#xff0c;因此在/etc/hosts中添加域名到IP的映射…

Linux的权限(2)

目录 Linux的&#xff08;事物属性&#xff09;文件权限 文件权限值得表示方法 字符表示方法 8进制表示方法 文件访问权限得相关设置方法 chmod修改权限法1 chmod修改权限法2 文件的角色&#xff08;拥有者/所属者&#xff09;修改 chown拥有者 chgrp所属者 &…

业务向——基于淘宝联盟平台的CPS

业务向——基于淘宝联盟平台的CPS 导读小试牛刀签名商品活动订单获取及用户 导读 上篇文章我们分享了多多进宝平台&#xff0c;那么这篇文章想继续带来CPS业务的分享&#xff0c;这次玩转的平台是淘宝联盟。在对接的过程中&#xff0c;也是踩了一些坑&#xff0c;特别是对于订…

车规MCU开发之E2E协议

啥是E2E&#xff1f; E2E的原理&#xff1a; 1. 发送端&#xff1a;发送数据包添加E2E保护头 2. 接收端&#xff1a;接收数据包校验E2E保护头 E2E例子 - profile 11为例 E2E_P11ConfigType wk_stP11Cfg { .CounterOffset 8, .CRCOffset 0, .DataID …

Jenkins安装和配置

拉取Jenkins镜像 docker pull jenkins/jenkins 编写jenkins_docker.yml version: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据卷data目录没有权限…

Ubuntu20.04 ROS-noetic安装与使用(原创)

ROS命令 注&#xff1a;内容还在不断更新中&#xff0c;研究方向是无人机群体追踪&#xff0c;无人机零件已经购买&#xff0c;本周末会自己配真实无人机&#xff0c;之后会不断更新相关算法笔记。如果有相关研究同学&#xff0c;可以私聊我&#xff0c;一起讨论。&#xff11;…

vue中正确使用swiper

首先安装swiper cnpm install swiper5.4.5 -S cnpm install vue-awesome-swiper3.1.3 -S 二、在main.js中引入swiper.css import swiper/css/swiper.css 三、在组件中使用 1、引入必要的组件 import { swiper, swiperSlide } from "vue-awesome-swiper"; 2、注…

30天精通Nodejs--第十七天:express-路由配置

目录 引言基础路由配置路由参数与查询参数路由前缀与子路由路由重定向结语 引言 上篇文章我们简单介绍了express的基础用法&#xff0c;包括express的安装、创建路由及项目启动&#xff0c;对express有了一个基础的了解&#xff0c;这篇开始我们将详细介绍express的一些高级用…

IDEA—初始化配置

注&#xff1a;以下红框圈的部分&#xff0c;均为已设置好的 外观与行为 编辑器 高级设置 按两次 shift 弹出提示问题解决

【WPF.NET开发】WPF中的拖放

本文内容 WPF 中的拖放支持数据传输拖放事件实现拖放拖放示例 本主题概述 Windows Presentation Foundation (WPF) 应用程序中的拖放支持。 拖放通常指一种数据传输方法&#xff1a;使用鼠标&#xff08;或一些其他指针设备&#xff09;选择一个或多个对象&#xff0c;将其拖…

神经网络|张量tensor(待完善)

文章目录 tensor/张量什么是tensor&#xff1f;如何用代码实现tensortensor在神经网络中的应用 其他 tensor/张量 什么是tensor&#xff1f; 张量是用来探究一个点在各个切面&#xff08;一共三个切面&#xff09;和各个方向&#xff08;x&#xff0c;y&#xff0c;z三个方向&…

蚁群算法(ACO)解决旅行商(TSP)问题的python实现

TSP问题 旅行商问题&#xff08;Travelling Salesman Problem, 简记TSP&#xff0c;亦称货郎担问题)&#xff1a;设有n个城市和距离矩阵D [dij]&#xff0c;其中dij表示城市i到城市j的距离&#xff0c;i, j 1, 2 … n&#xff0c;则问题是要找出遍访每个城市恰好一次的一条回…

【kafka】记录用-----------1

主题&#xff08;topic&#xff09;&#xff1a;消息的第一次分类 根据人为的划分条件将消息分成不同的主题 主题的划分是人为的根据不同的任务情景去划分 比如&#xff0c;我们有两个主题&#xff0c;一个是"订单"&#xff0c;另一个是"库存"。每个主题代…

Java集成消息队列Kafka

1.Kafka maven坐标 在使用Maven构建Java项目时&#xff0c;你可以通过添加Kafka的Maven依赖来引入Kafka相关的库。下面是Kafka的Maven坐标&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId&g…

SpringCloud + Redis 实现Api接口限流 防止恶意刷接口

一、API接口防刷 顾名思义&#xff0c;想让某个接口某个人在某段时间内只能请求N次。 二、原理 在请求的时候&#xff0c;服务器通过Redis记录你请求的次数&#xff0c;如果次数超过限制就不给访问。 在redis保存的key是有失效的&#xff0c;过期就会删除。 三、api限流的场…