结构体字段恢复
在提供的 Go 代码中,观察到一个奇怪的行为,结构体字段在方法内发生更改,但又恢复到其原来的状态事后检查时的原始值。此问题源于以下事实:结构体是通过值而不是指针传递。
解释:
在 TVManager 结构体的 sendMessage 方法中,使用 TVManager 的值调用连接器结构体的 sendCommand 方法结构。当按值传递结构时,将创建并传递结构的副本,而不是对原始结构的引用。
在 MockConnector 结构的 sendCommand 方法中,字段连接器结构(例如,last_command、值)被修改。但是,由于连接器是按值传递的,因此修改仅应用于结构的副本,而不是原始结构。
为了解决此问题,连接器结构中的sendCommand 方法应该通过指针传递,而不是通过值传递。这允许该方法修改原始连接器结构,而不是副本。
解决方案:
替换:
func (this MockConnector) sendCommand(payload map[string]string)
使用:
func (this *MockConnector) sendCommand(payload map[string]string)
额外注意事项:
以上是为什么我的 Go 结构体字段在方法调用后会恢复?的详细内容。更多信息请关注PHP中文网其他相关文章!