看看 Go 的内置函数,我才意识到它们不使用接口,而是使用神奇的“类型”。
https://golang.org/src/builtin/builtin.go https://golang.org/src/builtin/builtin.go
那么,在不使用泛型的情况下,这到底是如何可能的呢?我如何编写一个具有类似于append(接受任何类型的数组)而没有接口的签名的函数?
您不可能创建此类函数。具有这种通用的、神奇的“基因”的函数是由语言规范 https://golang.org/ref/spec,在部分中列出预声明标识符 https://golang.org/ref/spec#Predeclared_identifiers.
引用自有效执行: 附加: https://golang.org/doc/effective_go.html#append
的签名append
[...] 概括地说,它是这样的:
func append(slice []T, elements ...T) []T
where T
是任何给定类型的占位符。实际上,您无法在 Go 中编写类型为T
由调用者确定。这就是为什么append
是内置的:它需要编译器的支持。
查看相关问题:
通过变量访问 Go 函数 https://stackoverflow.com/questions/39073756/go-functions-accessed-through-variables/39073811#39073811
在普通函数上返回 Golang 中类似“ok”的映射 https://stackoverflow.com/questions/28487036/return-map-like-ok-in-golang-on-normal-functions/28487270#28487270
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)