看看Go的builtins函数,我只是意识到他们不使用接口而是使用魔术'Type'。
https://golang.org/src/builtin/builtin.go
那么如果不使用泛型,这究竟是怎么可能的呢?如何在没有接口的情况下编写一个带有类似于append(带任何类型的数组)的签名的函数?
答案 0 :(得分:5)
您无法创建此类功能。具有这种通用的,神奇的基因的功能"是language specification所涵盖的内置函数,在Predeclared identifiers部分列出。
append
[...]的签名示意图,它是这样的:func append(slice []T, elements ...T) []T
其中
T
是任何给定类型的占位符。 您实际上无法在Go中编写函数,其中调用者确定类型T
。这就是内置append
的原因:它需要编译器的支持。
参见相关问题: