Organisieren Sie Java und Go Pass / Referenz
Ich habe bisher Java und Go studiert. Die Übergabe nach Wert / Übergabe nach Referenz in diesen beiden Sprachen ist hier organisiert.
Definition an erster Stelle
Übergeben nach Wert
(Aufruf nach Wert): Eine Methode zum Erstellen einer neuen Kopie des Werts und zum Übergeben an das Argument der Methode.
Pass by reference
(Aufruf per Referenz): Eine Methode zum Übergeben einer Referenz an die Variable selbst als Methodenargument.
Für Java
- Argumente an die Methode werden zu 100% "Wert übergeben" übergeben.
- Wenn jedoch ein Java-Objekt in einer Variablen gespeichert ist, wird dort ein "Referenzwert" gespeichert, der den Speicherort des Objekts angibt.
- Wenn Sie ein Objekt als Argument übergeben, wird daher eine Kopie seines "Referenzwerts" übergeben.
- Infolgedessen ist es leicht zu missverstehen, als ob "das an das Argument übergebene Objekt durch Übergeben als Referenz neu geschrieben wird".
Für Go
- Verwirklichen Sie "Pass by Reference", indem Sie einen Zeiger als Argument übergeben.
- Golang-Struktur / Array ist "Werttyp" (im Gegensatz zu Java-Objekten). Das heißt, ein Bild, das einen Ort zum Speichern aller Felder / Elemente sichert und in einer Variablen speichert, die eine Struktur darstellt.
- Wenn Sie die Struktur als Wert übergeben, werden daher alle Felder kopiert. Selbst wenn dies neu geschrieben wird, wird die ursprüngliche Struktur nicht neu geschrieben.
- Auf der anderen Seite ist Map / Slice ein Referenztyp (ähnlich wie bei Java-Objekten). Das heißt, die Variable enthält einen Container, der den Zeiger des Elements und das Bild des Verfolgens des Zeigers für den Zugriff auf jedes Element enthält (Referenz. 26.09.19 0000)).
- Selbst wenn diese als Wert übergeben werden, wird die ursprüngliche Map / Slice neu geschrieben. Daher ist es normalerweise nicht sinnvoll, "Zeiger übergeben", und normalerweise auch nicht (Referenz).
Ergänzung
- Ich habe es so geschrieben, als wäre es als Referenz übergeben worden, aber die Details dort sind in hier aufgeführt.
- Die Erklärung von "Werttyp" / "Referenztyp" ist möglicherweise nicht korrekt. Nehmen Sie sie daher bitte nur als Bild.
Referenz