구조체 필드 되돌리기
제공된 Go 코드에서 구조체 필드가 메소드 내에서 변경되었지만 해당 필드로 되돌아가는 이상한 동작이 관찰되었습니다. 나중에 확인할 때 원래 값입니다. 이 문제는 구조체가 포인터 대신 값으로 전달된다는 사실에서 비롯됩니다.
설명:
TVManager 구조체의 sendMessage 메서드에서 커넥터 구조체의 sendCommand 메서드는 TVManager 구조체. 구조체가 값으로 전달되면 구조체의 복사본이 생성되어 원본 구조체에 대한 참조 대신 전달됩니다.
MockConnector 구조체의 sendCommand 메서드에서 커넥터 구조체(예: last_command, value)가 수정됩니다. 그러나 커넥터가 값으로 전달되므로 수정 사항은 구조체의 복사본에만 적용되고 원본 구조체에는 적용되지 않습니다.
이 문제를 해결하려면 sendCommand 메소드는 값 대신 포인터로 전달되어야 합니다. 이를 통해 메서드가 복사본이 아닌 원본 커넥터 구조를 수정할 수 있습니다.
해결책:
바꾸기:
func (this MockConnector) sendCommand(payload map[string]string)
다음으로:
func (this *MockConnector) sendCommand(payload map[string]string)
추가 고려 사항:
위 내용은 메소드 호출 후 Go 구조체 필드가 되돌려지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!