GoLang-Strukturen

WBOY
Freigeben: 2024-08-30 06:41:06
Original
406 Leute haben es durchsucht

GoLang Structs

In Golang sind Strukturen einfache Container für Daten.

  • kann Felder haben
  • keine damit verbundenen Methoden
    • Methoden, die separat definiert und einem Strukturtyp zugeordnet sind.

Im Folgenden werden einfache Book-Klassenäquivalente in Ruby und GoLang gezeigt.

class Book attr_reader(:title, :author) def initalize(title, author) @title = title @author = authoer end end # usage book = Book.new('Title', 'Jon Snow')
Nach dem Login kopieren
// Equivalent to `class Book` in ruby type Book struct { Title string, Author string }
Nach dem Login kopieren

Instanziieren des GoLang-Typs

Zusammengesetztes Literal

Composite Literal ist eine Syntax zum Erstellen und Initialisieren zusammengesetzter Typen in einem Schritt. Wir können die folgenden Typen instanziieren:

  • Strukturen
  • Arrays
  • Scheiben
  • Karten

Hier weisen wir der Variablen book eine neue Book-Instanz zu

// Composite Literal book := Book{ Title: "Title", Author: "Author" }
Nach dem Login kopieren

Neues Schlüsselwort verwenden

Die längere Form besteht darin, das neue Schlüsselwort zu verwenden. Dies ähnelt der Art und Weise, wie wir eine Klasse in Ruby mit book = Book.new(..)

instanziieren würden

Wir würden die Attribute des Buches (d. h. Titel und Autor) mit =-Zeichen zuweisen.

// Using the `new` keyword book := new(Book) book.Title = "Book Title" book.Author = "John Snow"
Nach dem Login kopieren

Ohne kurze Variablendeklaration (:=)

Beachten Sie, dass wir im ersten Beispiel das Symbol := verwendet haben?

Es ist syntaktischer Zucker für die folgende ausführliche Art, eine Variable zu deklarieren und ihr einen Wert zuzuweisen.

// Without Short Virable Declaration // Example 1 var book Book // Declare variable `book` of type `Book` book.Title = "Book Title" // Assign the value to book variable book.Author = "John Snow" // Example 2 var count int count = 20
Nach dem Login kopieren

Fabrikfunktion

Wir könnten das Factory-Muster auch verwenden, um die Initialisierung der Struktur zu vereinfachen, wenn wir Folgendes benötigen:

  • zusätzliche Logik hinzufügen
  • Standardwerte hinzufügen

Angenommen, wir möchten, dass jedes erste Zeichen des Buchtitels und der Autoren-Tokens großgeschrieben werden.

// Factory Function func NewBook(title string, author string) Book { return Book{ Title: titlelise(title), // default logic to "titlelise" Author: titlelist(author) } } func titlelise(str string) { caser := cases.Title(lanaguage.English) return caser.String(str) }
Nach dem Login kopieren

Anhängen einer Funktion an eine Struktur

In Ruby würden wir einfach eine Funktion innerhalb der Klasse definieren. Hier definieren wir eine Funktion namens to_string(), um den Autor des Buchtitels auszugeben.

class Book attr_reader(:title, :author) def initalize(title, author) @title = title @author = authoer end # new function we added def to_string() put "#{title} by #{string}" end end
Nach dem Login kopieren

In GoLang würden wir die Funktion „anhängen“, indem wir die Struktur an die Funktion übergeben.

// Equivalent to `class Book` in ruby type Book struct { Title string, Author string } // Attaching the function to the `struct` func (book Book) ToString() string { return fmt.Sprintf("%s by %s", book.Title, book.Author) } // Usage book := Book{ Title: "Title", Author: "Author" } book.ToString() // => Title by Author
Nach dem Login kopieren

Erklärung von:

func (book Book) ToString() string
Nach dem Login kopieren
TokenBeschreibungfuncFunktionsschlüsselwort(Buch Buch)Anhängen der Funktion an den Typ „Book-Struktur“
Token Description
func function keyword
(book Book) Attaching the function to the type Book struct
- book: variable to access the struct within the function
- Book: type of the struct
ToString() name of the function
string return type of the function
- book: Variable für den Zugriff auf die Struktur innerhalb der Funktion- Book: Typ der StrukturToString()Name der FunktionZeichenfolgeRückgabetyp der Funktion

Das obige ist der detaillierte Inhalt vonGoLang-Strukturen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!