Golang Struct

Golang Struct
Kurz gesagt, eine Struktur oder Struktur ist eine Sammlung von Feldern mit definierten Datentypen. Strukturen sind sehr nützlich und verbessern die Flexibilität bei Programmen. Strukturen sind wahrscheinlich die beste Wahl, wenn Sie Daten haben, die am besten als Einheit dargestellt werden. Betrachten Sie es als eine leichte Version der objektorientierten Programmierung.

Mit Go können Sie Strukturen mit integrierten oder benutzerdefinierten Typen erstellen und verwenden.

Dieser Leitfaden macht eine Reise und untersucht, wie Strukturen in der Go -Programmiersprache funktionieren.

Eine Struktur deklarieren

Die folgende Syntax zeigt, wie man Strukturen in Go erstellt:

typestruct_namestruct
field_1 data_type
field_2 data_type

field_ndata_type

Wir rufen zunächst das Schlüsselwort vom Typ an. Als nächstes kommt der Name der Struktur. Der Name der Struktur kann etwas benutzerdefiniert sein (solange sie den Regeln der Benennung in Go folgt). Wir verwenden dann das Struct -Schlüsselwort, gefolgt von einem Paar lockiger Zahnspangen.

In den Zahnspangen definieren wir verschiedene Felder, aus denen die Struktur besteht. Der Feldname folgt von seinem Datentyp.

Struktur deklarieren - Beispiel

Der nachstehende Beispielcode definiert eine Struktur, die als Mitarbeiter bezeichnet wird. Es enthält 5 Felder mit verschiedenen Datentypen.

typeToMePoMeee struct
Name Zeichenfolge
Alter int
Pensionierter Bool
Abteilungszeichenfolge
Gehalt float64

Das obige erstellt eine Mitarbeiterstruktur, die Felder verschiedener Typen enthält.

Hinweis: Wenn Sie die Struktur und ihre Felder in andere Pakete exportieren möchten, stellen Sie sicher, dass die Namen mit Großbuchstaben beginnen. Andernfalls ist der Umfang auf dieses Paket beschränkt.

Struktur -Instanziierung

Das Definieren einer Struktur bedeutet, dass wir nur eine Blaupause erstellen. Um ein Objekt aus der Struktur zu erstellen, müssen wir eine Instanz davon erstellen.

Um eine Instanz einer Klasse in Go zu erstellen, beginnen Sie mit dem Schlüsselwort var, gefolgt vom Namen der Instanz.

Das folgende Beispiel schafft eine Instanz der Mitarbeiterstruktur.

var EMP -Mitarbeiter

Sobald wir eine Instanz der Struktur erstellt haben, können wir unter Verwendung der Punktnotation wie gezeigt auf die Felder zugreifen:

var EMP -Mitarbeiter
EMP.NAME = "Thomas J"
EMP.Alter = 35
EMP.Pensioniert = falsch
EMP.Abteilung = "DevOps Engineer"
EMP.Gehalt = 130000.50

Sobald wir die Felder des Instace festgelegt haben, können wir sie als:

fmt.Println (emp)

Der obige Ausschnitt kehrt zurück:

$ go run strukturs.gehen
Thomas J 35 Falsch DevOps Engineer 130000.5

Struktur -Instantiation - wörtlich

Sie können auch eine Instanz einer Struktur unter Verwendung der Struct Literal -Methode erstellen. Das folgende Beispiel zeigt Struct Literal, um eine Instanz einer Struktur zu erstellen.

var emp1 = Mitarbeiter "Mary a", 26, falsch, "Spieleentwickler", 150000.10
fmt.Println (emp1)

Das obige Beispiel erstellt eine Instanz der Klasse und legt die Felder fest, ohne die Punktnotation zu verwenden.

Struktur -Instantiation - neues Schlüsselwort

Wenn Sie die Werte während der Instanzerstellung nicht festlegen möchten, können Sie das neue Keyword verwenden. Zum Beispiel:

var emp2 = neu (Mitarbeiter)

Nach dem Erstellen können wir auf die Instanzfelder zugreifen und Werte festlegen als:

EMP2.Name = "Judy L"
EMP2.Alter = 60
EMP2.Pensioniert = true
EMP2.Abteilung = "Humanressourcen"
EMP2.Gehalt = 119000.99

Zugriff auf Strukturfelder

Um auf die Felder einer Struktur zuzugreifen, geben Sie uns den Punktbetreiber,. Wir beginnen mit dem Namen der Strukturinstanz und dann mit dem Namen des Feldes.

Um beispielsweise den Namen des EMP2 zu erhalten, können wir es tun:

fmt.Println (emp2.Name)

Dies sollte den vom angegebenen Feld gespeicherten Wert zurückgeben.

Strukturmethoden

Mit dem Methodenempfänger können wir einer Struktur auch eine Methode hinzufügen. Betrachten Sie das folgende Beispiel, das eine Methode für die Mitarbeiterstruktur erzeugt.

func (e Mitarbeiter) info () String
fmt.Printf ("Name: %s \ n Alter: %d \ n Pensioniert: %t \ n Abteilung: %s \ n Gehalt: %f \ n", e.Name, e.Alter, e.Im Ruhestand, e.Abteilung, e.Gehalt)
zurück "fertig"

Sobald wir die Methode deklariert haben, können wir eine Instanz erstellen und die Felder als:

var e Mitarbeiter
e.NAME = "Thomas J"
e.Alter = 35
e.Pensioniert = falsch
e.Abteilung = "DevOps Engineer"
e.Gehalt = 130000.50

Schließlich können wir die Methode als:

fmt.Println (e.Die Info())

Nach dem Methodenaufruf sollten wir eine Ausgabe erhalten wie:

Name: Thomas J
Alter: 35
Ruhestand: Falsch
Abteilung: DevOps -Ingenieur
Gehalt: 130000.500000
Erledigt

Strukturfeldtyp

Sie können den Feldtyp mithilfe des reflektierenden Pakets herausfinden. Um beispielsweise den Typ des pensionierten Feldes zu erhalten, können wir dies tun:

fmt.Println (reflektieren.Typof (e.Im Ruhestand))

Der obige Code gibt den Feldtyp zurück als:

::Ausgang
bool

Strukturvergleich

Sie können überprüfen, ob eine Struktur mit dem Vergleichsoperator gleich einer anderen ist. Beachten Sie, dass eine Struktur als gleich definiert ist, wenn alle Felder einen gleichen Wert haben.

Hinweis: Nicht alle Datentypen sind vergleichbar.

Das folgende Beispiel erstellt zwei Strukturen und vergleicht sie mit dem Operator == Operator.


var e Mitarbeiter
e.NAME = "Thomas J"
e.Alter = 35
e.Pensioniert = falsch
e.Abteilung = "DevOps Engineer"
e.Gehalt = 130000.50
var emp2 = neu (Mitarbeiter)
EMP2.Name = "Judy L"
EMP2.Alter = 60
EMP2.Pensioniert = true
EMP2.Abteilung = "Humanressourcen"
EMP2.Gehalt = 119000.99
Wenn e == *emp2
fmt.Println ("Strukturen sind gleich")
anders
fmt.Println ("Strukturen nicht gleich")

Da die Strukturen nicht gleich sind, wird der sonstige Block ausgeführt.

HINWEIS: Leere und Nullwerte werden als gleich angesehen.

Abschluss

Puh!

Das war ein hervorragendes Tutorial über die Arbeit mit Strukturen in Go Lang. Dieses Tutorial deckt jedoch nur die Grundlagen ab. Es gibt viel mehr Vorgänge, die Sie mit Strukturen ausführen können.

Üben Sie weiter und sehen Sie sich unsere Go -Tutorials an, um mehr zu erfahren.