首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go 1.18中的“任意”类型是什么?

Go 1.18中的“任意”类型是什么?
EN

Stack Overflow用户
提问于 2022-04-22 06:34:09
回答 1查看 1.9K关注 0票数 1

在Visual代码中,自动完成工具(我认为它是gopls?)给出以下模板:

代码语言:javascript
复制
m.Range(func(key, value any) bool {
    
})

其中msync.Mapany类型不被识别,而是放在那里。

any是什么?我能把我想要的类型放到我想要的类型上,并希望去1.18为我做隐式类型转换吗?例如:

代码语言:javascript
复制
m.Range(func(k, v string) { ... })

哪种方法将kv作为回调中的字符串,而不必自己进行类型转换?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-22 06:36:59

any是一种新的预先声明的标识符interface{}的类型别名。

它来自第49884期CL 368254承诺2580 d0e

这个问题提到了interface{}/any

这不是一个特殊的设计,而是Go类型声明语法的逻辑结果。 您可以使用具有多个方法的匿名接口: func f(接口{Foo();Bar()}) { a.Foo() a.Bar() } 类似于在任何需要类型的地方都可以使用匿名结构: 函数f(结构{ func;条形字符串}){ fmt.Println(a.Foo) fmt.Println(a.Bar) } 空接口恰好匹配所有类型,因为所有类型至少都有零方法。 如果希望保持一致/不想引入特例,删除interface{}将意味着从语言中删除所有接口功能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71964357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档