`

go语言goroutine的管道channel(三)

    博客分类:
  • Go
 
阅读更多
package main

import "fmt"
import "time"
//单向管道
func main() {

	//默认情况下管道是双向的,可读可写
	ch:= make(chan int, 3)
//	给管道里存数据
	ch<-10
	ch<-20
	ch<-30
    //从管道里取值
	<-ch

    //单向管道,只写

	ch2 := make(chan<- int, 3)
	ch2<-10

	//单向管道,只读

	ch3 := make(<-chan int, 3)
	<-ch3


	//某些场景下需要同时从多个通道接收数据,这个时候可以使用golang中提供的select多路复用

    // 一个整型管道
	intChan := make(chan int, 10)
	for i:=1;i<=10;i++{
		intChan<-i
	}
    //一个字符串管道
	stringChan := make(chan string, 10)
	for i:=1;i<=10;i++{
		stringChan<- "hello"+fmt.Sprintf("%d", i)
	}

	//注意:使用select来读取channel里面的数据的时候不需要关闭channel
	for{
		select {
		case v:= <-intChan:
			fmt.Printf("从intChan读取数据%d\n", v)
			time.Sleep(time.Millisecond*50)
		case v:= <-stringChan:
			fmt.Printf("从stringChan读取数据%v\n", v)
			time.Sleep(time.Millisecond*50)
		default:
			fmt.Println("read finish")
			return
		}
	}


}

 

分享到:
评论

相关推荐

    Go语言协程goroutine和管道channel教程.PDF

    ### Go语言协程goroutine与管道channel教程 #### 一、引言 Go语言作为一种现代编程语言,以其简洁高效的语法和强大的并发模型受到广大开发者的喜爱。其中,协程(goroutine)和管道(channel)是Go语言实现高效并发...

    go语言练手小项目,聊天室,高并发特性(goroutine+管道)

    在本项目中,我们将探讨如何利用Go语言构建一个聊天室,特别是其内置的高并发特性——goroutine和管道(channel)。 Goroutine是Go语言中的轻量级线程,它们比操作系统线程更轻便、更高效,因为它们由Go运行时管理...

    Go语言的管道Channel用法实例

    总结来说,Go语言的管道Channel提供了一种简洁安全的方式来在并发程序中进行数据交换和同步。通过上述的知识点解析,我们可以看到Channel不仅仅是简单的数据传输通道,它更是Go语言中实现并发程序设计的重要工具。...

    《Go语言编程》源码,练习用.zip

    2. Channel:Channel是Go语言中用于goroutine间通信的数据结构,可以看作是goroutine之间的管道。通过发送和接收操作,goroutine可以在channel上交换数据,实现同步和协作。 三、Go语言标准库 Go语言的标准库非常...

    Go-ChanBroker一个goroutine的Broker类似于kafka

    Go-ChanBroker是一个基于Go语言实现的轻量级消息代理,它借鉴了Kafka的设计理念,但使用Go的goroutine和channel作为核心机制来处理消息的发布与订阅。这个项目旨在提供一种简单、高效的解决方案,用于在分布式系统中...

    Go语言圣经Go语言圣经.pdf

    Go语言,又称Golang,是由Robert Griesemer、Rob Pike及Ken Thompson三位在Google工作的开发者设计并实现的一种静态类型的编程语言。Go语言的设计受到了多种早期编程语言的影响,其中包括C、Pascal、Modula-2、...

    Go语言学习资料

    - Go语言的高级编程:这部分内容涵盖了Go语言在实际开发中的高级应用,例如数据的读写(文件、JSON、XML等),错误处理与测试(单元测试、性能调试)、并发编程(goroutine、channel)等。 Go语言的并发模型是其一...

    Go语言资料文档.zip

    Go语言,又称Golang,是由Google在2009年推出的开源编程语言,旨在提高开发效率,特别是对于网络服务器、存储集群以及大型中央服务器等应用场景。Go语言的设计目标是结合C语言的执行效率和Python的易用性,提供一种...

    学习 Go 语言(Golang)

    Go 语言,又称 Golang,是一种开源的编程语言,由 Google 开发并推出,自2007年开始设计,首次公开发布于2009年,主要开发者包括 Robert Griesemer, Rob Pike, 和 Ken Thompson 等人。Go 语言的设计理念旨在将静态...

    go语言一些小例子例程

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。它的设计目标是提高开发效率,同时保持程序的高性能和可靠性。Go语言以其简洁的语法、高效的并发模型以及...

    Go语言课程.zip

    Go语言,又称Golang,是Google在2009年推出的开源编程语言,设计目标是简单、高效、可移植,并且具有内置并发支持。Go语言以其简洁的语法、高效的性能和强大的工具链受到了广大开发者的欢迎,尤其在云计算、网络服务...

    Go-dnpipes分布式命名管道

    6. **性能优化**: 为了最大化效率,Go-dnpipes可能会利用Go的goroutine和channel进行内部优化,减少不必要的I/O操作,提高消息传递速度。 7. **监控与日志**: 为了便于诊断和调试,Go-dnpipes可能提供了监控和日志...

    Go语言程序设计 (中文)

    2. **并发处理**:Go语言内置了对并发的支持,通过goroutine和channel机制,开发者可以轻松地编写出高并发的应用程序。 3. **跨平台性**:Go语言支持多种操作系统,包括Windows、Linux、macOS等,能够实现一次编写多...

    B站8小时入门GO语言学习小项目

    Go语言,又称Golang,是Google在2009年推出的一种开源编程语言,它旨在提高开发者的生产效率,提供简单、高效的语法和强大的并发处理能力。本教程以"B站8小时入门GO语言学习小项目"为主题,适合初学者进行快速上手。...

    Go语言实战 文字版PDF 免费

    3. **管道**:Go语言中的管道是一种特殊的通道,用于在goroutine之间传递数据。书中详细介绍了如何利用管道实现高效的数据流处理。 4. **错误处理**:Go语言强调显式错误处理,提倡通过返回值的方式传递错误信息。...

    Go:Go语言进阶特性

    Go语言的并发模型是其最突出的特点之一,其中goroutine和channel是最为核心的概念。 ##### 1. Goroutine详解 **1.1 什么是Goroutine** Goroutine是Go语言中的轻量级线程,由Go运行时进行管理。与操作系统级别的...

    《学习Go语言》中文版(201200730) PDF 高清

    - **高效**:Go语言内置了并发支持,通过goroutine和channel机制简化了多线程编程的复杂度。 - **跨平台**:Go语言可以轻松地编译为不同操作系统(如Linux、Windows等)下的二进制文件,实现跨平台部署。 - **...

    go语言channel实现多核并行化运行的方法

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、强类型的语言。它以其内置的并发原语而著名,这些原语使得编写能够充分利用多核处理器的程序变得简单。在Go语言中,`...

Global site tag (gtag.js) - Google Analytics