首页 > 解决方案 > Go中的make函数如何处理可选参数?

问题描述

我们知道 Go 不支持可选参数,但是,在使用通道和更具体的缓冲通道时,我意识到make函数确实接受缓冲区大小的可选参数。如果 Go 团队不喜欢可选参数,我有点困惑,那么为什么他们支持一个经常与这种反模式一起使用的函数呢?

好吧,为了不偏离最初的问题,任何人都可以帮助解释一下,在幕后,这是如何工作的吗?

标签: go

解决方案


make不是正常功能。new, len, cap, close, append和其他一些也不是。这些是内置函数

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

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

普通函数不能有可选参数。


推荐阅读