【问题标题】:How do go's len() and make() functions work?go 的 len() 和 make() 函数是如何工作的?
【发布时间】:2015-03-28 02:17:26
【问题描述】:

go 的 len()make() 函数是如何工作的?由于该语言缺乏对泛型和函数重载的支持,我看不出func len(v Type) int 是如何实现的。 func make(Type, size IntegerType) Type 也是如此。

我似乎无法在 go 源中找到该函数,我设法找到的最接近的是 this

【问题讨论】:

    标签: function types go


    【解决方案1】:

    lenmake 函数是语言规范的一部分并内置于编译器中。对内置函数的运行时支持位于 runtime package

    文件builtin.go 仅用于文档。它没有编译。

    【讨论】:

    【解决方案2】:

    由于 Go 的严格类型,编译器始终知道您传递给 len 函数的类型,因此它会针对不同类型转到不同的函数,这可以在编译时确定。在大多数情况下,您试图获取切片的长度,在这种情况下,len 函数只需要为该切片的结构返回 len 字段(因为切片实际上是一个结构);字符串也一样。

    编译器有各种各样的技巧,编译器生成的汇编代码很少遵循你输入的完全相同的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      相关资源
      最近更新 更多