欢迎来到思维库

思维库

Go 1.18 中的 Any 是什么?

时间:2025-11-05 05:23:55 出处:系统运维阅读(143)

大家好,我是 polarisxu。

Go 1.18 因为泛型引入 any,这实际上是 interface{} 的别名:

type any = interface{} 

以下代码虽然不是泛型,但用 Go 1.18 可以正常运行,证明 any 和 interface{} 是免费源码下载一样的:(这里可以在线运行:https://gotipplay.golang.org/p/dPeNhe-7nkA)

package main import (  "fmt" ) // 这里的 any 并非泛型的约束,而是类型 func test(x any) any {  return x } func main() {  fmt.Println(test("a")) } 

泛型中,any 换为 interface{} 也可以:(这里可以在线运行:https://gotipplay.golang.org/p/wKL3rKuldQX)

package main import (  "fmt" ) // 注意其中的 T interface{},正常应该使用 T any func Print[T interface{}](s ...T) {  for _, v := range s {   fmt.Print(v)  } } func main() {  Print("Hello, ", "playgroundn") } 

你也可以本地使用 tip 运行验证下。源码库

可见,之所以引入 any 关键字,主要是让泛型修饰时短一点,少一些括号。any 比 interface{} 会更清爽~

此外,项目中如果想要做替换,可以通过 gofmt 将 interface{} 改为 any:

gofmt -w -r interface{} -> any ./... 

分享到:

温馨提示:以上内容和图片整理于网络,仅供参考,希望对您有帮助!如有侵权行为请联系删除!

友情链接: