📌  相关文章
📜  golang make chan - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 14:41:33.414000             🧑  作者: Mango

Golang中的make和chan

在Go编程语言中,make和chan是两个重要的概念,它们可以用于实现并发编程和消息传递机制,下面我们将分别介绍它们的用法。

make的用法

在Go中,make函数用于创建数据结构,例如切片和映射。make可以指定容器的长度和容量,例如:

slice := make([]int, 0, 10) // 创建一个长度为0,容量为10的切片

make还可以用于创建通道(channel),通道在Go语言中是并发编程的核心,它可以用于协程(goroutine)之间的通信和同步。创建通道的语法如下:

ch := make(chan int)

以上代码创建了一个名为ch的整型通道。通道可以是不同的类型,例如:

ch := make(chan string)

以上代码创建了一个名为ch的字符串通道。

chan的用法

通道是Go语言中的一种同步原语,它用于协程之间的通信和同步。通道有两种类型:有缓冲的通道和无缓冲的通道。

无缓冲通道

无缓冲通道是指不能缓存任何数据的通道,发送和接收操作都是同步的。例如:

ch := make(chan int)
ch <- 1 // 发送操作,阻塞直到有接收操作
x := <-ch // 接收操作,阻塞直到有发送操作

以上代码创建了一个名为ch的无缓冲整型通道,发送操作和接收操作都是阻塞的,直到另一个协程进行相反的操作为止。

有缓冲通道

有缓冲通道是指可以缓存一定数量数据的通道,发送操作和接收操作都是异步的。例如:

ch := make(chan int, 10)
ch <- 1 // 发送操作,不阻塞
x := <-ch // 接收操作,不阻塞

以上代码创建了一个名为ch的有缓冲整型通道,缓存容量为10,发送操作和接收操作都是非阻塞的,只有当缓存容量达到限制或通道关闭才会阻塞。

总结

make和chan是Go编程语言中的重要概念,它们可以用于实现各种并发编程和消息传递机制。希望本文介绍的用法对你的学习和开发有所帮助。