For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,程序员能够接触和学习的编程语言也越来越多了,今天我们就通过案例分析来简单了解一下,go语言编程入门需要掌握哪些知识。
多路复用-Select
select是一种go可以处理多个通道之间的机制,看起来和switch语句很相似,但是select其实和IO机制中的select一样,多路复用通道,随机选取一个进行执行,如果说通道(channel)实现了多个goroutine之间的同步或者通信,那么select则实现了多个通道(channel)的同步或者通信,并且select具有阻塞的特性。
select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。
select随机执行一个可运行的case,如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。
当有多个通道等待接收信息时,可以使用该select语句,并且希望在其中任何一个通道先完成时执行一个动作。Go的select允许等待多个通道操作,将gooutine和channel与select结合是Go的一个强大功能。
非阻塞通道操作
通道上的基本发送和接收阻塞,但可以使用带有默认子句的select来实现非阻塞发送、接收,甚至非阻塞多路选择。无阻塞的接收如果消息上有一个可用的值,那么select将使用该值的<-messages情况;如果没有可用的值则立即采用默认情况。非阻塞发送的工作原理类似这里不能将msg发送到消息通道,因为该通道没有缓冲区,也没有接收器,因此选择默认情况。可以在默认子句之上使用多种情况来实现多路非阻塞选择,对消息和信号进行非阻塞接收。
定时器-TimerAndTicker
经常实际项目有不少需求需要使用在将来的某个时间点执行Go代码,或者在某个时间间隔重复执行;Go内置的定时器就能很简单实现这个功能。GO标准库中的定时器主要有两种,一种为Timer定时器,一种为Ticker定时器。Timer计时器使用一次后,就失效了,需要Reset()才能再次生效,而Ticker计时器会一直生效。在一个GO进程中,其中的所有计时器都是由一个运行着timerproc()函数的goroutine来保护。
工作池-WorkerPools
工作池是一种常用的并发设计模式,它利用一组固定数量的goroutine来处理一组任务。任务可以被异步地添加到工作池中,等待可用的workergoroutine来处理。当没有更多的任务需要处理时,workergoroutine将会保持空闲状态,等待新的任务到来。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。