当前位置: 首页 > news >正文

关于go中的select

笔记仓库:gitee.com/xiaoyinhui


代码中的解释纯个人理解,有不对的望指出

package testsimport ("fmt""testing"
)var uCnt int = 0func TestSelece(t *testing.T) {// 对于 select 语句,在进入该语句时,会按源码的顺序对每一个 case 子句进行求值:这个求值只针对发送或接收操作的额外表达式/*根据下面【select01()】的输出结果 可以分析出来【对于 select 语句,在进入该语句时,会按源码的顺序对每一个 case 子句进行求值】的意思可以看到每次遍历都会计算出3次方法 showStr 的结果,直白点讲就是会执行一次这个方法并且 还是按照代码的顺序 123 进行顺序执行的至于选择那个进行执行这就没有办法确定,因为都可以执行,选择那个执行得看底层的选择*/select01()fmt.Println("")fmt.Println("******************************************")fmt.Println("******************************************")fmt.Println("")/*根据下面【select02()】的输出结果 可以分析出来【这个求值只针对发送或接收操作的额外表达式】的意思前面的部分就不解释了,后面的就是 Channel 的接收不会执行,因为这里如果跟上面的方法一样执行了,那就是给取出来了,结果就不会 打印了show1 后还能打印两次接收的c2的值*/select02()
}func showStr1() int {uCnt++fmt.Println("~~~~~~~~~~~~~11111~~~~~~~~~~~~~~", uCnt)return uCnt
}func showStr2() int {uCnt++fmt.Println("~~~~~~~~~~~222222~~~~~~~~~~~~~~~", uCnt)return uCnt
}func showStr3() int {uCnt++fmt.Println("~~~~~~~~~~~333333~~~~~~~~~~~~~~~", uCnt)return uCnt
}func select01() {c1 := make(chan int)go func() {for v := range c1 {if v != 0 {fmt.Println("++++++++", v)}}}()for i := 1; i <= 3; i++ {select {case c1 <- showStr1():fmt.Println("show1 ================", i)case c1 <- showStr2():fmt.Println("show2 ================", i)case c1 <- showStr3():fmt.Println("show3 ================", i)}}close(c1)/*某次输出结果~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 1~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 2~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 3show1 ================ 1~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 4~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 5~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 6++++++++ 1++++++++ 5show2 ================ 2~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 7~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 8~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 9show3 ================ 3++++++++ 9*/
}func select02() {c1 := make(chan int)c2 := make(chan int)go func() {for v := range c1 {if v != 0 {fmt.Println("++++++++", v)}}}()go func() {c2 <- 88c2 <- 99}()for i := 1; i <= 5; i++ {select {case c1 <- showStr1():fmt.Println("show1 ================", i)case c1 <- showStr2():fmt.Println("show2 ================", i)case c1 <- showStr3():fmt.Println("show3 ================", i)case mV := <-c2:fmt.Println("mV := <-c2 ================", i, mV)}}close(c1)/*某次输出结果~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 1~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 2~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 3show1 ================ 1~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 4~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 5~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 6mV := <-c2 ================ 2 88~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 7~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 8~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 9mV := <-c2 ================ 3 99~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 10++++++++ 1~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 11~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 12show1 ================ 4~~~~~~~~~~~~~11111~~~~~~~~~~~~~~ 13~~~~~~~~~~~222222~~~~~~~~~~~~~~~ 14~~~~~~~~~~~333333~~~~~~~~~~~~~~~ 15++++++++ 10++++++++ 14show2 ================ 5*/
}

一点点笔记,以便以后翻阅。

相关文章:

关于go中的select

笔记仓库&#xff1a;gitee.com/xiaoyinhui 代码中的解释纯个人理解&#xff0c;有不对的望指出 package testsimport ("fmt""testing" )var uCnt int 0func TestSelece(t *testing.T) {// 对于 select 语句&#xff0c;在进入该语句时&#xff0c;会按源…...

【Node.js从基础到高级运用】十一、构建RESTful API

在本篇博客中&#xff0c;我们将综合之前讨论的内容&#xff0c;深入探索如何使用Node.js构建一个RESTful API。我们将重点讨论设计合理的API端点&#xff0c;展示如何通过代码实现这些端点&#xff0c;并指导如何使用Postman测试我们的API&#xff0c;确保其按预期工作。 前提…...

Python和MATLAB数字信号波形和模型模拟

要点 Python和MATLAB实现以下波形和模型模拟 以给定采样率模拟正弦信号&#xff0c;生成给定参数的方波信号&#xff0c;生成给定参数隔离矩形脉冲&#xff0c;生成并绘制线性调频信号。快速傅里叶变换结果释义&#xff1a;复数离散傅里叶变换、频率仓和快速傅里叶变换移位&am…...

华为OD技术C卷“测试用例执行计划”Java解答

描述 示例 算法思路1 整体思路是&#xff0c;先读取特性的优先级和测试用例覆盖的特性列表&#xff0c;然后计算每个测试用例的优先级&#xff0c;并将其与测试用例的索引存储到二维数组中。最后按照优先级和索引排序&#xff0c;输出测试用例的索引&#xff0c;即为执行顺序。…...

solana 入门 1

solana-co-learn Solana 开发学习笔记(一)——从 Hello World 出发 安装开发环境 windows下环境配置 wsl First start with installing WSL on your system. wsl --install wsl安装Ubuntu 列出可用的分发版 wsl.exe --list --online显示&#xff1a; 以下是可安装的有效…...

JavaEE之多线程(创建线程的五种写法)详解

&#x1f63d;博主CSDN主页: 小源_&#x1f63d; &#x1f58b;️个人专栏: JavaEE &#x1f600;努力追逐大佬们的步伐~ 目录 1. 前言 2. 操作系统"内核" 3. 创建线程的五种写法 (我们重点要掌握最后一种写法!!) 3.1 继承 Thread, 重写 run 3. 2 实现 Runnabl…...

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…...

集群保持集群负载均衡和hash一致性

集群保持负载均衡和一致性哈希是在构建分布式系统时经常涉及的两个重要概念。 负载均衡&#xff1a; - 在集群中&#xff0c;负载均衡是指将传入的请求有效地分发到不同的服务器上&#xff0c;以确保每台服务器都能够处理适量的流量&#xff0c;避免某些服务器过载而造成性能问…...

吴恩达深度学习笔记:神经网络的编程基础2.9-2.14

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第二周&#xff1a;神经网络的编程基础 (Basics of Neural Network programming)2.9 逻辑回归中的梯度下降&#xff08;Logistic Regression Gradient Descent&#xff09; 第一门课&#xff…...

在C++项目中使用python脚本(四种)常见报错解决

上一期我们讲了如何在C中使用python脚本&#xff0c;这期讲讲过程中常会遇到的一些错误。 一、c代码未设置python路径 Py_SetPythonHome(L"D:\\anaconda3\\envs\\envpython3.7");这一句很重要&#xff0c;切记加上并且换成自己的路径 Py_SetPythonHome(L"D:\\a…...

微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】

qiankun官方文档&#xff1a;qiankun - qiankun 一、创建主应用&#xff1a; 这里以 vue 为主应用&#xff0c;vue版本&#xff1a;2.x // 全局安装vue脚手架 npm install -g vue/clivue create main-app 省略 vue 创建项目过程&#xff0c;若不会可以自行百度查阅教程 …...

nodejs切换淘宝源

1. 查看当前地址 npm config get registrynpm config get disturl2. 设置当前地址&#xff08;设置为淘宝镜像&#xff09; npm config set registry http://registry.npm.taobao.org/3. 设置当前地址&#xff08;设置为默认地址&#xff09; npm config set registry https…...

怎么避免电脑数据被拷贝?电脑如何禁用USB功能?

在无纸化办公的今天&#xff0c;很多重要数据都存放在电脑中。为了避免数据泄露&#xff0c;需要采用安全的方式保护电脑数据。那么&#xff0c;该如何避免电脑数据被拷贝呢&#xff1f;下面我们就来了解一下。 方法一&#xff1a;物理隔绝 物理隔绝是一种原始但有效的USB禁用…...

给电脑加硬件的办法 先找电脑支持的接口,再买相同接口的

需求&#xff1a;我硬盘太小&#xff0c;换或加一个大硬盘 结论&#xff1a;接口是NVMe PCIe 3.0 x4 1.找到硬盘型号 主硬盘 三星 MZALQ512HALU-000L2 (512 GB / 固态硬盘) 2.上官网查 或用bing查 非官方渠道信息&#xff0c;不确定。...

uniapp微信小程序_自定义交费逻辑编写

一、首先看最终效果 先说下整体逻辑,选中状态为淡紫色,点击哪个金额,充值页面上就显示多少金额 二、代码 <view class"addMoney"><view class"addMoneyTittle">充值金额</view><view class"selfaddmoney" :class"{…...

论文阅读——RingMo

RingMo: A Remote Sensing Foundation Model With Masked Image Modeling 与自然场景相比&#xff0c;RS图像存在以下困难。 1&#xff09;分辨率和方位范围大&#xff1a;受遥感传感器的影响&#xff0c;图像具有多种空间分辨率。此外&#xff0c;与自然图像的实例通常由于重…...

Hadoop,Hive 数据预处理CR

记录一次大材小用,我在将.csv电影数据集 电影json数据 导入MySQL时,出现了报错: 很明显,意味着.csv中的数据有非utf8编码的, 尝试使用file查看了下.csv文件的编码格式: 如果不确定原始编码,可以先用file命令尝试检测一下: file -i input.csv该命令会显示文件的MIME类型…...

小程序开发——获取设备信息 API(三)

ty.device.getShareDeviceInfo 获取共享设备信息 需引入DeviceKit&#xff0c;且在>2.2.0版本才可使用 请求参数 Object object 属性类型默认值必填说明deviceIdstring是deviceId 设备 idcompletefunction否接口调用结束的回调函数&#xff08;调用成功、失败都会执行&am…...

Vue2 + node.js项目

1、Vue2 vue2主要功能包括登入、退出、用户权限、表格的增删改查、文件下载。 Vue2项目地址https://gitee.com/www6/finance1.git 2、node.js编写后端接口 2.1、项目初始化 后端地址https://gitee.com/www6/finance-backend.git 创建项目 npm install -g koa-generator …...

如何使用IDE端通义灵码

如何使用IDE端通义灵码 第一步&#xff1a;安装IDE插件&#xff08; VS Code 和 JetBrains 二选一&#xff09; 如何下载安装VS Code &#xff1a;https://code.visualstudio.com 如何下载安装JetBrains&#xff1a;https://www.jetbrains.com/idea/download 第二步&#x…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...