站长网 语言 Go 1.18 中的 Any 是啥?

Go 1.18 中的 Any 是啥?

Go 1.18 因为泛型引入 any,这实际上是 interface{} 的别名: type any = interface{} 以下代码虽然不是泛型,但用 Go 1.18 可以正常运行,证明 any 和 interface{} 是一样的:(这里可以在线运行:https://gotipplay.golang.org/p/dPeNhe-7nkA) package mai

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, ", "playground\n")
}
你也可以本地使用 tip 运行验证下。
 
可见,之所以引入 any 关键字,主要是让泛型修饰时短一点,少一些括号。any 比 interface{} 会更清爽~

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/biancheng/yuyan/2021/1206/33976.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部