登录
首页 >  Golang >  Go问答

使用 make 来初始化通道

来源:stackoverflow

时间:2024-02-17 18:03:22 460浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《使用 make 来初始化通道》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

在任何情况下,我都可以使用通道而不用 make 创建通道,还是应该始终使用 make 创建通道?

这也适用于地图和切片吗?


正确答案


在任何情况下我都可以使用通道而无需使用 make 创建通道

一般情况下,应根据 the spec 使用 make 创建通道:

可以使用内置函数 make 创建新的初始化通道值

但是,在某些情况下,nil 通道很有用。该规范指出:

零通道永远不会准备好进行通信。

这在某些情况下会很有帮助(请参阅 this answer,了解通道 awaitrequest 故意设置为 nil 的示例)。因此,从技术上讲,您可以“使用通道而不用 make 创建通道”。

这也适用于地图和切片吗?

否 - 这里有一些替代方案 (playground):

var m map[int]int
fmt.Println(m[1]) // Note that you cannot add elements to a nil map
m1 := map[int]int{}
m1[1] = 2
m2 := map[int]int{1: 2}
fmt.Println(m2[0])
var s []int
fmt.Println(append(s, 1)) // Nil map is empty but you can append
s1 := []int{}
fmt.Println(append(s1, 2))
s2 := []int{1}
fmt.Println(s2[0])

本篇关于《使用 make 来初始化通道》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>