首页 > 后端开发 > Golang > Go:类型断言 - 规范中是否有错误?

Go:类型断言 - 规范中是否有错误?

WBOY
发布: 2024-02-06 08:35:10
转载
853 人浏览过

Go:类型断言 - 规范中是否有错误?

问题内容

go 规范类型断言中是否存在错误?

A type assertion used in an assignment statement or initialization of the special form
v, ok = x.(T)
v, ok := x.(T)
var v, ok = x.(T)
var v, ok interface{} = x.(T) // dynamic types of v and ok are T and bool

yields an additional untyped boolean value.
登录后复制

最后一个例子的含义是什么? var v,好的接口{} = x.(t)

我在 go 1.19 中遇到错误 syntax 错误:意外的接口,期望 := 或 = 或逗号syntax 错误:意外的接口,期望 := 或 = 或逗号


正确答案


所有这些行都在尝试相同的操作:x 的类型断言以键入 T。值 ok 确定断言是否成功。在您提供的最后一个示例中,唯一的区别是,您没有为 vok 确定类型,而是为两者提供了 interface{} 的类型。将 vok 声明为 interface{} 不会更改它们包含的值。它允许您将它们发送到函数或将它们添加到需要 interface{}

正确答案

🎜🎜所有这些行都在尝试相同的操作:x 的类型断言以键入 T。值 ok 确定断言是否成功。在您提供的最后一个示例中,唯一的区别是,您没有为 vok 确定类型,而是为两者提供了 interface{} 的类型。将 vok 声明为 interface{} 不会更改它们包含的值。它允许您将它们发送到函数或将它们添加到需要 interface{} 类型的集合中,此时必须再次断言它们。🎜

以上是Go:类型断言 - 规范中是否有错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板