Do Go内置使用泛型?

时间:2017-06-15 12:37:10

标签: generics gcc go built-in

看看Go的builtins函数,我只是意识到他们不使用接口而是使用魔术'Type'。

https://golang.org/src/builtin/builtin.go

那么如果不使用泛型,这究竟是怎么可能的呢?如何在没有接口的情况下编写一个带有类似于append(带任何类型的数组)的签名的函数?

1 个答案:

答案 0 :(得分:5)

您无法创建此类功能。具有这种通用的,神奇的基因的功能"是language specification所涵盖的内置函数,在Predeclared identifiers部分列出。

引自Effective Go: Append:

  

append [...]的签名示意图,它是这样的:

func append(slice []T, elements ...T) []T
     

其中T是任何给定类型的占位符。 您实际上无法在Go中编写函数,其中调用者确定类型T。这就是内置append的原因:它需要编译器的支持。

参见相关问题:

Go functions accessed through variables

Return map like 'ok' in Golang on normal functions