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