网站遭到攻击,江苏华悦建设集团网站,做视频网站好做吗,建设网站需要什么技术支持1.channel是什么 在Go语言中#xff0c;Channel是一种用于在Goroutine之间进行通信的数据结构。它类似于队列#xff0c;可以在一个Goroutine中将数据发送到Channel#xff0c;然后在另一个Goroutine中接收这些数据。Channel提供了一种同步的方式#xff0c;确保发送和接收…1.channel是什么 在Go语言中Channel是一种用于在Goroutine之间进行通信的数据结构。它类似于队列可以在一个Goroutine中将数据发送到Channel然后在另一个Goroutine中接收这些数据。Channel提供了一种同步的方式确保发送和接收操作按顺序进行从而避免了并发访问共享数据的问题。
2.创建channel管道并初始化 var 变量 chan 元素类型 变量 make(chan 元素类型缓冲区大小) 例如 初始化一个可以接收、发送int值类型的通道缓冲区为0
c**加粗样式**h : make(chan int)初始化一个可以接收、发送int值类型的通道可缓冲1个int值。第2个int值向通道中发送时会被阻塞。被缓冲的元素值会严格按发送的顺序接收。
ch : make(chan int,1)注意定义channel管道类型的方向 chan 类型 双向 chan- 类型 只发送 -chan 类型 只接收 3.channel操作 通道有发送send、接收(receive和关闭close三种操作。 发送 将一个值发送到通道中。
ch - 数据接收 从一个通道中接收值。
- channel //从channel中接收数据并将其丢弃
x : - channel //从channel中接收数据将其赋值给x
x, ok : channel //从channel中接收数据将其赋值给x同时检查通道是否已关闭或者是否为空关闭
close(ch)4.channel使用 双向通道ch chan int func main() {ch : make(chan int)go One(ch)result : -chfmt.Println(result)
}
//双向通道 可以接收也可以发送
func One(ch chan int) {ch - 42
}单向通道只能发送ch chan- int
func main() {ch : make(chan int)go One(ch)result : -chfmt.Println(result)
}
//单向通道只能发送
func One(ch chan- int) {ch - 42}单向通道只能接收ch -chan int
func main() {ch : make(chan int)go One(ch)ch - 42
}
//单向通道只能接收
func One(ch -chan int) {result : -chfmt.Println(result)}5.go gin框架接口使用channel异步执行
//下方响应不会等one函数执行完毕
func test(context *gin.Context) {msg, _ : ioutil.ReadAll(context.Request.Body)log.Println(string(msg))var info map[string]interface{}json.Unmarshal(msg, info)ch : make(chan map[string]interface{},1)go One(ch)ch - infoclose(ch)context.String(200,返回)}func One(ch -chan map[string]interface{}) {time.Sleep(5 * time.Second)info : -chlog.Println(11接受到info,info)}//该接口等one函数执行完毕后在返回响应
func test1(context *gin.Context) {msg, _ : ioutil.ReadAll(context.Request.Body)log.Println(string(msg))var info map[string]interface{}json.Unmarshal(msg, info)ch : make(chan map[string]interface{})go One1(ch)ch - infoclose(ch)context.String(200,返回)}func One1(ch -chan map[string]interface{}) {time.Sleep(5 * time.Second)info : -chlog.Println(11接受到info,info)}