首页 > 后端开发 > Golang > 为什么 Go 的类型推断对于结构体字段赋值失败?

为什么 Go 的类型推断对于结构体字段赋值失败?

Barbara Streisand
发布: 2024-12-28 17:29:30
原创
631 人浏览过

Why Does Go's Type Inference Fail for Struct Field Assignments?

Go 赋值中的类型推断失败

Go 的类型推断机制通常允许简洁的赋值语句。但是,某些赋值可能无法按预期推断类型。

请考虑以下示例:

i := 10
next := 11
prev, i := i, next
登录后复制

此代码段正确推断变量的类型并相应地分配它们。

但是,涉及结构体字段的类似赋值可能会遇到类型推断问题:

type Foo struct {
    Bar int
}

f := Foo{10}
next := 11
prev, f.Bar := f.Bar, next
登录后复制

在这种情况下,编译器会报告错误:“non-name on left side of :=.”

造成这种差异的原因是在第一个示例中,赋值的左侧是变量名,而在第二个示例中,它是结构体字段。 Go 的类型推断引擎需要左侧的命名变量来推断右侧的类型。

此问题被确认为 Go 问题 6842。它不被视为错误,而是一个限制当前类型推断实现的一部分。

以上是为什么 Go 的类型推断对于结构体字段赋值失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

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