go - Go中的make函数如何处理可选参数?
问题描述
我们知道 Go 不支持可选参数,但是,在使用通道和更具体的缓冲通道时,我意识到make
函数确实接受缓冲区大小的可选参数。如果 Go 团队不喜欢可选参数,我有点困惑,那么为什么他们支持一个经常与这种反模式一起使用的函数呢?
好吧,为了不偏离最初的问题,任何人都可以帮助解释一下,在幕后,这是如何工作的吗?
解决方案
make
不是正常功能。new
, len
, cap
, close
, append
和其他一些也不是。这些是内置函数。
大多数内置函数和运算符都由编译器重写,以调用运行时包中的普通函数。
对于通道,编译器将make
调用重写为对runtime.makechan或相关变体之一的调用。
普通函数不能有可选参数。
推荐阅读
- c# - 尝试不每秒创建新文件,但如果文件限制超过则使用 log4net 创建新文件
- windows - 使用不带方括号的 dir /D 命令作为输出
- haskell - Haskell 中使用 List Monad 的下推自动机
- java - 如何分配多维输出缓冲区来提供 Android Tflite 的interpreter.run()?
- django - 忽略 Django 中的可疑文件操作
- c# - 应用程序在后台时如何正确通知当前视图模型有关推送通知
- vba - SSRS - 如何使用 3 个 if 语句,其中一个是空值
- sql-server - 通过从表格中的单元格运行脚本来分配变量
- c# - MSTest ThrowsException 与异常对象的条件?
- push-notification - Adobe 分析 我们可以在具有 JS 实现且没有 sdk 的 Web 应用程序中进行推送通知吗