Umkehren von Strukturfeldern
Im bereitgestellten Go-Code wird ein seltsames Verhalten beobachtet, bei dem sich ein Strukturfeld innerhalb einer Methode ändert, aber zu seinem ursprünglichen Zustand zurückkehrt Originalwert bei späterer Überprüfung. Dieses Problem ergibt sich aus der Tatsache, dass die Struktur nach Wert statt nach Zeiger übergeben wird.
Erklärung:
In der sendMessage-Methode der TVManager-Struktur wird eine Methode sendCommand einer Connector-Struktur mit einem Wert der TVManager-Struktur aufgerufen. Wenn eine Struktur als Wert übergeben wird, wird eine Kopie der Struktur erstellt und anstelle eines Verweises auf die ursprüngliche Struktur übergeben.
In der sendCommand-Methode der MockConnector-Struktur werden die Felder von Die Connector-Struktur (z. B. last_command, value) wird geändert. Da der Connector jedoch als Wert übergeben wird, werden die Änderungen nur auf die Kopie der Struktur angewendet, nicht auf die ursprüngliche.
Um dieses Problem zu beheben, muss die Connector-Struktur in der Die sendCommand-Methode sollte per Zeiger und nicht als Wert übergeben werden. Dadurch kann die Methode die ursprüngliche Connector-Struktur ändern und nicht eine Kopie.
Lösung:
Ersetzen:
Durch:
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWarum wird mein Go-Strukturfeld nach einem Methodenaufruf zurückgesetzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!