在Visual代码中,自动完成工具(我认为它是gopls?)给出以下模板:
m.Range(func(key, value any) bool {
})其中m是sync.Map。any类型不被识别,而是放在那里。
any是什么?我能把我想要的类型放到我想要的类型上,并希望去1.18为我做隐式类型转换吗?例如:
m.Range(func(k, v string) { ... })哪种方法将k、v作为回调中的字符串,而不必自己进行类型转换?
发布于 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{}将意味着从语言中删除所有接口功能。
https://stackoverflow.com/questions/71964357
复制相似问题