Go中的make函数如何处理可选参数?

时间:2018-12-26 08:00:47

标签: go

我们知道Go不支持可选参数,但是,在使用通道(尤其是缓冲通道)时,我意识到make函数确实接受用于缓冲区大小的可选参数。如果Go团队不喜欢可选参数,那么我有点困惑,为什么他们支持这种反模式中经常使用的功能?

那么,为了不偏离原先的问题,有谁能帮忙解释一下这是如何工作的?

1 个答案:

答案 0 :(得分:2)

make不是正常功能。 newlencapcloseappend等等都没有。这些是built-in functions

大多数内置函数和运算符都由编译器重写,以调用运行时程序包中的普通函数。

对于通道,编译器将make调用重写为对runtime.makechan或相关变体之一的调用。

普通功能不能具有可选参数。