go 的 len() 和 make() 函数是如何工作的?
How do go's len() and make() functions work?
go 的 len()
和 make()
函数如何工作?由于该语言缺乏对泛型和函数重载的支持,我看不出 func len(v Type) int
是如何实现的。 func make(Type, size IntegerType) Type
.
也是如此
我似乎无法在 go 源代码中找到该函数,我找到的最接近的是 this
len
和 make
函数是语言规范的一部分,内置于编译器中。 runtime package.
中对内置函数的运行时支持
文件builtin.go仅用于文档。未编译。
由于 Go 的严格类型,编译器总是知道你传递给 len
函数的类型,因此它会针对不同的类型转到不同的函数,这可以在编译时确定。在大多数情况下,您试图获取切片的长度,在这种情况下,len
函数只需要 return 该切片结构的 len
字段(因为切片实际上是一个结构);字符串也一样。
编译器有各种各样的技巧,编译器生成的汇编代码很少遵循您键入的完全相同的逻辑。
go 的 len()
和 make()
函数如何工作?由于该语言缺乏对泛型和函数重载的支持,我看不出 func len(v Type) int
是如何实现的。 func make(Type, size IntegerType) Type
.
我似乎无法在 go 源代码中找到该函数,我找到的最接近的是 this
len
和 make
函数是语言规范的一部分,内置于编译器中。 runtime package.
文件builtin.go仅用于文档。未编译。
由于 Go 的严格类型,编译器总是知道你传递给 len
函数的类型,因此它会针对不同的类型转到不同的函数,这可以在编译时确定。在大多数情况下,您试图获取切片的长度,在这种情况下,len
函数只需要 return 该切片结构的 len
字段(因为切片实际上是一个结构);字符串也一样。
编译器有各种各样的技巧,编译器生成的汇编代码很少遵循您键入的完全相同的逻辑。