Go语言关于chan理解的实验

编程这东西如果不自己动手写,很可能就永远也不知道是怎么回事了。

之前学习GO写的一些小工具一直没有用到chan这东西(我是PHP的),搜索了一些文章,发现大神们都写得很精彩、很高深,但我这种小白是看不懂了,只是了解了大概是一种类似线程的机制。

还是不会用,只好自已实践下了:

不得不说代码很烂,不过对我来说够了,主要是理解!执行结果:

如果不用goroutine直接使用thread作为过程函数的话,输出顺序应该是str1...str5。

这里使用goroutine调用thread,可能“线程”启动需要一点时间,因为goroutine启动thread后主线程是不会去管它了,所以先输出了str3。

之后是thread里输出了str1。

然后由于主线程要取出ch,就等待了3秒,输出str2。

接着是str4。

再等3秒,输出str5。

做完这个还是有些懵懵懂懂的,不明白这样做有哪些亮眼的地方,看来得到实际项目中应用才能得出结论了。

============================================

刚开始学着写一些博客,写得不好的地方请见谅,觉得学到了的就赏脸关注下吧~

我的QQ群(PHP)336533596,欢迎加入。相互交流,聊天吹牛~

时间: 2024-10-12 00:46:39

Go语言关于chan理解的实验的相关文章

关于db_block_size的理解和实验

关于对db_block_gets的理解与实验 实验 一. 自己手动创建的小表 创建一个区大小为  40k [email protected]>show parameter db_block_size NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ db_block_size  

有关C++ std::string 类的类型转换 其他语言永远无法理解的伤

最近做了个项目,C++的MFC窗口程序,一个基于dialog的学生-图书管理系统,有一些感触,最后会放上一些项目截图和部分代码提供大家参考.如果有什么好方法和建议欢迎指导. 强类型,为什么这么伤 我知道强类型是很必要的,但是最近使用的都是一些弱类型的语言,到回来使用C++的时候还真是很不习惯.std::string在学的时候就知道了,好用但还是跟c标准char[]有很大区别的,MFC编程中又加入了没有学过的Cstring和LPSTR.LPWSTR等,下面我就来分享一下一些有关类型转换的感受. 什

linux信号解释(4)--C语言下的理解

上一节中中简单介绍了信号的处理机制,就是调用函数库来实现信号的处理,因此,在这节中,介绍在C语言下如何理解信号的处理机制. 创建一个文件signal.c,文件内容如下:(对于学过一下C语言的童鞋来说是不是很熟悉呢) #include<signal.h> //信号函数库 #include<unistd.h> //C和C++语言提供对POSIX #include<stdio.h> //标准的输入输出库 void signalout(int signo) //自定义signa

C语言数据类型的理解

数据类型的定义: 作为一种语言,必然有所谓的语言组成要素,就像日常生活中人们之间的交流一样,首先会有字,字再成词组,再来就是句子,后来呢就是段落等等.当然不同的字,词,句这些在一起,就会有不同的表达效果,这也就好理解为何C语言会有相应的数据类型了.c语言数据类型如下图: 所谓数据类型是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分的. 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型 数据类型的标示意义: 数据类型的所占的字节数可以这样理解,当我们写作文

C语言01深入理解基本概念(一)

基本数据类型分析 数据类型 什么是数据类型 ? ?  数据类型可以理解为固定内存大小的别名 ?  数据类型是创建变量的模子 类型的本质 char short int 1 byte 2 byte 4 byte 内存空间 char c short s int i 变量本质 ?  变量是一段实际连续存储空间的别名 ?  程序中通过变量来申请并命名存储空间 ?  通过变量的名字可以使用存储空间 auto,register,static 分析 auto ? C 语言中的变量可以有自己的属性 ?  在定义变

说说对C语言指针的理解

指针困扰了无数学习编程的人,或许你的老师会告诉你,指针比较难学. 然而,不要被吓到,本宝宝就是当时被老师的话唬住所以学习指针那章的时候都没心情听课.(说得像讲别的内容时我听了似的,just kidding) 导致了学习链表的时候各种卧槽. *************************** 基本介绍 ************************** 程序中数据的使用往往是以变量的形式出现,每个变量都对应若干存储单元,变量的值存储在存储单元中,通过对变量的引用和赋值就可以使用或修改存储在存

COM对象在易语言中的理解和使用

在windows编程中,会用到COM对象,那什么是COM对象呢?如果第一次接触,一定是不好理解这个概念的!我记得我第一次接触COM对象这个概念的时候,可以说是一头雾水! 什么是COM对象?下面是个人看了很多资料和实践所得到的理解: 一 com对象跟对象编程里面的对象概念应该是一样的,都是对象.竟然都是对象,那么一定都有属性和方法. 二 com对象,官方说法是组件对象模型(compoment object model),他是一组规范,是MicroSoft创建的一组二进制和网络标准,用于解决两个组件

关于shell编程中逻辑运算异或的理解和实验

shell编程中的逻辑运算,有或且非.短路运算,异或运算,我们用最简单的方式理解一下异或. 异或:^ 异或的两个值,相同为假,不同为真 理解起来,两个值是指二进制的值,出现两个1或者两个0结果为假[0],出现两个不一样的值结果为[1]. 例如: 十进制 二进制 10 01010 22 10110 异或结果 28 11100 那异或在shell编程中如何体现价值呢?下面的实验可以用在临时变量里面. #利用临时变量将a b进行互换值 [[email protected] ~]#a=6 [[email

go语言slice的理解

Golang slice yongsean  作者 2017.02.17 00:07  打开App 创建切片,len.cap.append b := make([]int, 5) println(len(b), cap(b)) // 输出结果是:5, 5 fmt.Println(b) // 输出结果是:[0 0 0 0 0] 上述代码是生成默认占用5个0值的切片,下面的输出结果是另一回事 b := make([]int, 0, 5) println(len(b), cap(b)) // 输出结果