为了账号安全,请及时绑定邮箱和手机立即绑定

函数结果的分配

函数结果的分配

Go
哈士奇WWW 2022-08-01 15:18:55
来自C#,这让我感到困惑。在 Go 中,如果我有type Employee struct {   ID     int   Salary int}那我就可以做到var tom Employeetom.Salary = 100目前为止,一切都好。然后,如果我有一个函数func employeeByID(id int) Employee {   // do something and return an employee}那么为什么这不能编译呢?employeeByID(10).Salary = 100此外,这似乎编译得很好:andrew := employeeByID(10)andrew.Salary = 100
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

它不会编译,因为该赋值无效。

规格: 作业:

每个左侧操作数必须是可寻址的、映射索引表达式或(仅适用于 = 赋值)空白标识符

函数调用的返回值不可寻址。有关详细信息,请参阅如何从函数调用中获取返回值的指针和如何在 Go 中存储对操作结果的引用?

想想看:你调用一个函数,它返回一个值(你不存储),如果你不存储结果,改变它有什么好处?它将被丢弃,因此分配也将是无用的。

如果将结果存储在变量中(如第二个示例中所示),则可以更改其字段,因为变量是可寻址的。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信