Strukturkopieren in Golang (Struktur kopieren)

Strukturkopieren In Golang Struktur Kopieren



In Go sind Strukturen unglaubliche und leistungsstarke zusammengesetzte Datentypen, die es uns ermöglichen, mehrere Variablen unterschiedlicher Datentypen in einer einzigen Einheit zu gruppieren.

Sie spielen eine entscheidende Rolle beim Aufbau realer Anwendungen, da sie es uns ermöglichen, die realen Entitäten als einzelne Einheiten darzustellen.

Eine der häufigsten Aufgaben bei der Arbeit mit Strukturen in Go ist das Kopieren dieser. Nein, wir sprechen nicht von Kopieren und Einfügen.







In diesem Tutorial lernen wir die Funktionsweise des Kopierens von Strukturen in Go kennen. Dazu gehören Strukturliterale, das Kopieren der Felder und mehr.



Golang-Strukturen

Bevor wir uns mit dem Kopieren von Strukturen befassen, wollen wir zunächst die Grundlagen von Strukturen in Go verstehen.



Definieren einer Struktur

Um eine Struktur in Go zu definieren, verwenden wir das Schlüsselwort „type“, gefolgt von einer Strukturdefinition. Ein Beispiel für eine Struktur ist wie folgt:





Typ Auto Struktur {
Modellname Zeichenfolge
Kilometerstand int
Jahr int
}

Im gegebenen Beispiel definieren wir eine Struktur namens „Car“ mit drei Hauptfeldern: ModelName, Mileage und Year.

Strukturinstanzierung

Um eine Instanz einer Struktur zu erstellen, können wir einfach eine Variable des Strukturtyps deklarieren und sie mit einem Strukturliteral initialisieren.



Zum Beispiel:

C := Auto {
Modellname : „Mercedes Benz GLS-250 (4Matic)“ ,
Kilometerstand : 299 ,
Jahr : 2029 ,
}

In diesem Fall erstellen wir eine Instanz der Struktur namens „c“ und weisen jedem Feld, das zu dieser Instanz gehört, einen Wert zu.

Zugriff auf die Strukturfelder

Wir können auf die Felder einer Struktur zugreifen, indem wir die Punktnotation verwenden, wie im folgenden Beispielcode gezeigt:

Paket hauptsächlich
importieren „fmt“
Typ Auto Struktur {
Modellname Zeichenfolge
Kilometerstand int
Jahr int
}
Funktion hauptsächlich () {

C := Auto {
Modellname : „Mercedes Benz GLS-250 (4Matic)“ ,
Kilometerstand : 299 ,
Jahr : 2029 ,
}
fmt . Druckenln ( 'Modellname:' , C . Modellname )
fmt . Druckenln ( 'Kilometerstand:' , C . Kilometerstand )
fmt . Druckenln ( 'Jahr:' , C . Jahr )

}

Sobald wir den angegebenen Code ausführen, sollte er die Felder und Werte der Strukturinstanz wie folgt drucken:

Modellname : Mercedes Benz GLS - 250 ( 4Matic )
Kilometerstand : 299
Jahr : 2029

Kopieren Sie die Struktur in Golang

Nachdem wir die Grundlagen der Arbeit mit Strukturen geklärt haben, können wir fortfahren und etwas über das Kopieren von Strukturen lernen.

Was ist Strukturkopieren?

Unter Strukturkopieren versteht man den Vorgang des Erstellens einer neuen Kopie einer vorhandenen Struktur mit einem ähnlichen Feldwert wie die vorhandene Struktur.

Ein häufiger Anwendungsfall der Strukturkopie ist, wenn wir eine Struktur ändern müssen, die sich tatsächlich auf die ursprüngliche Struktur auswirkt, oder wenn Sie eine Kopie einer Struktur an eine bestimmte Funktion übergeben und kaskadierende Auswirkungen auf die ursprüngliche Struktur vermeiden müssen.

Strukturen in Go sind Werttypen. Das heißt, wenn wir eine Struktur einer neuen Variablen zuweisen oder an eine Funktion übergeben, wird eine Kopie der Struktur erstellt.

HINWEIS: In den gleichzeitigen Programmen kann die gemeinsame Nutzung veränderlicher Daten zwischen Goroutinen zu Rennbedingungen führen. Das Kopieren der Strukturen kann dazu beitragen, Datenwettläufe zu vermeiden, indem sichergestellt wird, dass jede Goroutine über eine eigene Kopie der Daten verfügt.

Methode 1: Verwendung des Zuweisungsoperators

Die einfachste und gebräuchlichste Methode zum Kopieren einer Strebe ist die Verwendung des Zuweisungsoperators (=).

Wie bereits erwähnt, wird durch die Zuweisung einer neuen Variablen zu einer Struktur eine Kopie der Struktur erstellt.

Ein Beispiel für die Verwendung dieser Technik ist wie folgt:

Funktion hauptsächlich () {
C := Auto {
Modellname : „Mercedes Benz GLS-250 (4Matic)“ ,
Kilometerstand : 299 ,
Jahr : 2029 ,
}
fmt . Druckenln ( 'Modellname:' , C . Modellname )
fmt . Druckenln ( 'Kilometerstand:' , C . Kilometerstand )
fmt . Druckenln ( 'Jahr:' , C . Jahr )
Kopieren := C
}

In diesem Beispiel weisen wir einfach die ursprüngliche Struktur (c) einer neuen Variablen zu.

Methode 2: Verwenden der feldweisen Kopiertechnik

Beim feldweisen Kopieren erstellen wir eine neue Struktur und kopieren jedes Feld manuell von der ursprünglichen Struktur in die neue.

Betrachten Sie zur Veranschaulichung den folgenden Beispielcode:

Funktion hauptsächlich () {
C := Auto {
Modellname : „Mercedes Benz GLS-250 (4Matic)“ ,
Kilometerstand : 299 ,
Jahr : 2029 ,
}
fmt . Druckenln ( 'Modellname:' , C . Modellname )
fmt . Druckenln ( 'Kilometerstand:' , C . Kilometerstand )
fmt . Druckenln ( 'Jahr:' , C . Jahr )
Kopieren := Auto {
Modellname : C . Modellname ,
Kilometerstand : C . Kilometerstand ,
Jahr : C . Jahr ,
}
}

In diesem Fall erstellen wir eine neue Struktur namens „Kopie“ und weisen die Felder den Werten der ursprünglichen Struktur zu.

Diese Technik ist besonders nützlich, wenn wir eine detaillierte Kontrolle darüber benötigen, welche Felder einbezogen werden sollen.

Methode 3: Verwenden des Strukturliterals

Ein anderer Ansatz besteht darin, ein Strukturliteral zu verwenden, um eine Kopie der ursprünglichen Struktur zu erstellen. Dabei wird grundsätzlich die ursprüngliche Struktur als Wert an die neue Struktur übergeben.

Ein Beispiel ist wie folgt:

C := Auto {
Modellname : „Mercedes Benz GLS-250 (4Matic)“ ,
Kilometerstand : 299 ,
Jahr : 2029 ,
}
Kopieren := Auto ( C )

Dadurch sollte eine neue Kopie der ursprünglichen Struktur mit denselben Feldwerten erstellt werden.

Ein Nachteil dieser Methode besteht darin, dass sie tendenziell weniger explizit ist. Setzen Sie es mit Bedacht ein, um ein unerwartetes Verhalten zu vermeiden.

Methode 4: Verwenden des Reflect-Pakets

Wir haben auch Zugriff auf das Paket „reflect“, das es uns ermöglicht, eine Struktur mithilfe von Reflection zu kopieren.

Ein Beispiel ist wie folgt:

importieren 'reflektieren'

Kopieren := reflektieren . Neu ( reflektieren . Art der ( C )) . Element () . Schnittstelle () . ( Auto )

Ein Nachteil dieser Methode besteht darin, dass sie einen Leistungsaufwand und eine potenzielle Komplexität mit sich bringt. Es ist flexibel, aber nicht ganz das effizienteste.

Abschluss

In diesem Tutorial haben wir die Grundlagen von Strukturen in Go behandelt. Wir haben auch über das Kopieren von Strukturen gesprochen, warum Sie es möglicherweise benötigen, und alle Methoden und Techniken zum Kopieren von Strukturen in Go untersucht.