Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen Golang-Referenzen und Zeigern

Der Unterschied zwischen Golang-Referenzen und Zeigern

(*-*)浩
(*-*)浩Original
2019-12-27 13:35:119471Durchsuche

Der Unterschied zwischen Golang-Referenzen und Zeigern

Einige Sprachen, einschließlich C und C++, unterstützen Zeiger. Andere Sprachen, einschließlich C++, Java, Python, Ruby, Perl und PHP, unterstützen alle die Anführungszeichen. Oberflächlich betrachtet sind Referenzen und Zeiger sehr ähnlich; beide werden verwendet, um einer Variablen den Zugriff auf eine andere Variable zu ermöglichen. (Empfohlenes Lernen: GO )

Da beide viele gleiche Funktionen bieten, wissen sie oft nicht, was ihre jeweiligen internen Mechanismen unterscheiden. In diesem Artikel erkläre ich den Unterschied zwischen Zeigern und Referenzen.

Warum das wichtig ist

Zeiger sind der Kern der Go-Sprache. Die meisten Programmierer lernen Go basierend auf einer der oben genannten Sprachen. Daher ist es für das Verständnis von Go von entscheidender Bedeutung, den Unterschied zwischen Zeigern und Referenzen zu verstehen.

Selbst wenn Sie mit Sprachen gearbeitet haben, die Zeiger haben, unterscheidet sich die Go-Implementierung von Zeigern von C und C++ dadurch, dass sie einige der netten Eigenschaften von Referenzen beibehält und gleichzeitig die Funktionalität von Zeigern beibehält.

Der Rest dieses Artikels soll das Konzept der Referenzen im Großen und Ganzen diskutieren und nicht auf spezifische Implementierungen. Wir werden Go als Referenzimplementierung von Zeigern verwenden.

Was ist der Unterschied?

Eine Zeigervariable speichert die Adresse einer anderen Variablen.

Eine Referenzvariable zeigt auf eine andere Variable.

Um unseren Standpunkt zu beweisen, verwenden wir C++ als Beispiel, das sowohl Zeiger als auch Referenzen unterstützt.

int i = 3;2int *ptr = &i;3int &ref = i;

Die erste Zeile definiert die Variable i; die zweite Zeile definiert einen Zeiger ptr, der auf die Speicheradresse der Variablen i zeigt; die dritte Zeile definiert einen Referenz-Ref, der auf die Variable i zeigt.

Nicht nur die Operatoren sind unterschiedlich, auch die verwendeten Methoden sind unterschiedlich. Für Zeiger müssen Sie zum Dereferenzieren den Operator * verwenden. Für Referenzen sind keine Operatoren erforderlich. Es versteht sich, dass Sie dazu neigen, Variablen in Anführungszeichen zu verwenden.

Um mit unserem Beispiel fortzufahren, ändern die folgenden beiden Codezeilen beide den Wert von i auf 13.

ptr = 13;
ref = 13;

Sie fragen sich vielleicht, ob ich versuche, direkt auf die Variable ptr zuzugreifen, ohne Dereferenzierung zu verwenden. Dies bringt uns zum zweiten Hauptunterschied zwischen Zeigern und Referenzen. Zeiger können neu zugewiesen werden, Referenzen jedoch nicht. Mit anderen Worten: Dem Zeiger kann eine andere Adresse zugewiesen werden.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Golang-Referenzen und Zeigern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn