在 Go 中,结构体是按值传递的,这意味着对函数内结构体所做的更改不会反映在原始结构体中。这在提供的代码中变得很明显,其中结构体字段恢复到其原始值,即使该值似乎在方法内发生了更改。
问题在于结构体如何传递给方法。在给定的代码中,TVManager 方法 sendMessage() 正在修改连接器字段的副本,并且该方法内所做的任何更改都不会传播回原始结构。
要解决此问题,该方法应使用指针接收器。通过在接收者前面加上星号 (*) 前缀,该方法将接收指向实际结构实例的指针,并且该方法中所做的任何更改都将应用于原始结构。
同样,在模拟对象,sendCommand() 方法也应该使用指针接收器。
另一个 Go 约定是避免使用“this”或“self”作为接收者姓名。相反,建议使用与方法功能相匹配的简洁且具有描述性的名称。
通过实施这些更改,结构体字段将成功更新,而不会恢复到其原始值。
以上是为什么我的结构字段在 Go 中意外恢复?的详细内容。更多信息请关注PHP中文网其他相关文章!