`
qq466862016
  • 浏览: 128672 次
  • 来自: 杭州
社区版块
存档分类
最新评论

golang chan数据类型

阅读更多

golang chan数据类型

golang数据类型有基本数据类型: int float long double string 也包含有 struct array map point类型,具体定义是如何使用的 

 

 

 

package concurrent
import "fmt"
//import "time"



type People struct {
	Name string
	
}


var channel chan *People

func AddPerson(p *People) {
	
	channel <- p
	
}

func GetPersonInfo() *People {
	
	 return <-channel
}


func Start() {
	//注意通道在使用之前一定要进行初始化操作,否则进行通道的写入或者读取时候将出现错误
	// int 
	//var ch chan int 
	// ch = make(chan int)
	
	//var ch chan  string
	//ch = make(chan string)
	//var ch chan float32
	//ch = make(chan float32)
	
	//var ch chan map[string] string
	//ch = make(chan map[string]string)
	
	//var ch chan People 
	//ch = make(chan People)
	
	
	//var ch chan *People
	//ch = make(chan *People)
	
	
	
	
	
	channel = make(chan * People)
    p := People{"冬天"}
   
    go AddPerson(&p)
	v :=GetPersonInfo()
	fmt.Println("结果是 :",v.Name)
	
	
	
}

 

结果是 : 冬天

 二、单通道设置

   格式:

    定义单向写入

    var channelName chan <-  ElementType

/  定义单向读出

   var channelName <- chan  ElementType

 

package com 

import "fmt"



func Check(wCh <- chan int,rCh chan <- bool) {
	
	 va :=<- wCh
	fmt.Println(va)
	rCh <- true
	
}

func Start() {
      
	var wCh chan int
	wCh = make(chan int) //通道一定要进行初始化
	var rCh chan bool
	rCh = make(chan bool)////通道一定要进行初始化
	go Check(wCh,rCh)
	wCh <- 100
	fmt.Println(<- rCh)
	fmt.Println("com",wCh,rCh)
}
   运行结果是:

 

   

100
true
com 0x11f8e300 0x11f8e340
 

 

 

 

分享到:
评论

相关推荐

    Go-golang中金额和货币格式

    在Go-golang编程语言中,处理金额和货币格式化是一个重要的任务,特别是在开发财务软件时。Go语言提供了强大的工具和库来帮助开发者有效地处理这些数值。在这个场景中,我们关注的是`accounting`包,它是一个专为Go...

    golang判断chan channel是否关闭的方法

    在 Go 语言中,`chan` 是一种非常重要的类型,用于实现 goroutine 之间的通信。一个 `chan` 可以被用来发送和接收数据,而 `close` 函数则可以用来关闭一个 `chan`。一旦 `chan` 被关闭后,就不能再向其发送数据,但...

    golang路由,集成mysql,redis。读取配置文件信息

    queue := make(chan string) // 创建一个字符串类型的通道 go func() { for item := range queue { // 从队列中读取数据 // 执行MySQL或Redis操作 } }() go func() { for _, item := range dataItems { queue...

    golang go面试题

    这些知识点涵盖了从基本的数据类型、结构体、切片的使用,到更高级的主题如并发、错误处理、Web框架Beego的应用等。 ### 1. 结构体的定义与使用 在Golang中,可以使用`struct`关键字来定义结构体类型。比如: ```...

    golang 学习笔记

    - **结构体**:自定义数据类型,由一系列属性组成,例如:`type Person struct { Name string; Age int }`。 ##### 1.5 类型转换 - 在 Go 中,类型转换是显式的,必须通过类型转换操作符来执行。例如,将 `int` ...

    Go-Go入门学习的一组示例golang代码

    Go语言提供了多种数据类型,包括整型(int, uint)、浮点型(float32, float64)、字符串(string)以及布尔型(bool)。例如: ```go var age int = 25 var name string = "张三" var isStudent bool = true ...

    Golang channels implementaion .rar

    在Go中,你可以使用`make`函数创建一个通道,指定其数据类型。例如,创建一个整型通道: ```go ch := make(chan int) ``` 这里的`chan int`表示通道可以传递整型值。 2. **发送与接收操作** 你可以使用`操作...

    Go语言学习之认识Golang

    - **方法**: 当函数与特定的数据类型关联时,它可以被定义为一个方法。方法定义中包含一个接收者(receiver)参数。 ```go func (p myType) funcname(q int) (r, sint) { return 0, 0 } ``` - **函数示例**: ...

    golang struct 实现 interface的方法

    `struct`是Golang中用于组合多个字段的数据类型,它可以包含各种不同的数据类型,如整型、字符串、指针等。另一方面,`interface`是一组方法的集合,它定义了一个行为规范。当一个类型实现了接口中所有的方法,我们...

    Golang Channel源码解析

    在Golang中,我们通过`make(chan T, size)`来创建一个类型为T的Channel,其中size可选,表示通道的缓冲区大小。例如,下面的代码创建了一个能存储3个整数的通道: ```go ch := make(chan int, 3) ``` 之后,我们...

    golang基础之Gocurrency并发

    Golang的并发模型基于CSP(Communicating Sequential Processes)理论,强调通过通信来共享内存,而不是通过共享内存来通信,这有助于避免数据竞争和其他并发问题。 首先,我们来看看Goroutine。Goroutine可以被视...

    关于Golang中range指针数据的坑详解

    关于Golang中range指针数据的问题详解 一、引言 在Go语言中,`for range` 是一种常用的迭代机制,它可以用来遍历数组、切片、字符串、通道(channel)、映射(map)等数据结构。然而,在处理指针类型的数据时,`...

    golang-tutorial:进入入门教程源码合集

    1. 静态类型:Go语言是静态类型的,这意味着变量的数据类型在编译时就已经确定,有助于避免运行时错误。 2. 内存管理:Go有内置的垃圾回收机制,简化了内存管理。 3. 结构体和接口:Go中的结构体用于封装数据,接口...

    golang实现mysql数据库备份的操作方法

    `interface{}`则扮演着Java中的`Object`角色,可以接收任何数据类型。然而,使用`interface{}`需要特别注意类型转换,确保在访问数据时不会出现类型不匹配导致的运行时错误。 另一个关键点是`xfffd`编码问题。在UTF...

    golang开发中channel使用

    channel[通道]是golang的一种重要特性,正是因为channel的存在才使得golang不同于其它语言。channel使得并发编程变得简单容易有趣。 channel的概念和语法 一个channel可以理解为一个先进先出的消息队列。channel用来...

    6.Golang流程控制语句与循环(二)1

    // 当可以从chan1接收数据时,执行这里的代码 case chan2 // 当可以向chan2发送value时,执行这里的代码 default: // 没有任何case可执行时,执行default的代码 } ``` `select`语句让并发编程更加灵活,它可以...

    用golang实现一个定时器任务队列实例

    在Golang中,定时器是通过`time`包提供的`Timer`和`Ticker`类型来实现的。`Timer`主要用于一次性触发,而`Ticker`则用于周期性地触发任务。这两种类型的共同特点是它们都基于Go的channel机制工作,使得定时器能够与...

    golang 中的 channel 小解

    channel 是引用数据类型,需要 make 后才能使用 给管道中写入数据事,不能超过其容量 channel 关闭时,就不能再往里写数据了,读数据是没有问题的 可以使用 for range 遍历管道,但是要先 close 关闭 channel 示例1...

    pub-sub-golang

    1. **Channels作为消息传递媒介**: 在Go中,channels是用于在goroutines之间安全地传递数据的内置类型。它们可以作为发布者和订阅者之间的桥梁,允许发布者将消息放入channel,而订阅者则从channel中取出消息。 2. ...

    深入Golang之context的用法详解

    2. Done方法返回一个chan struct{}类型的channel,它在Context被取消或超时时会被关闭。这个channel可以用来作为goroutine之间的广播通知,告知它们停止当前的工作。 3. Err方法返回一个error,这个error指示...

Global site tag (gtag.js) - Google Analytics