Heim > Backend-Entwicklung > Golang > Unterstützt Go unbenannte Funktionsargumente?

Unterstützt Go unbenannte Funktionsargumente?

Linda Hamilton
Freigeben: 2024-12-31 22:47:10
Original
1009 Leute haben es durchsucht

Does Go Support Unnamed Function Arguments?

Sind unbenannte Argumente eine Sache in Go?

In Go kann die Verwendung unbenannter Argumente in Funktionsdefinitionen zunächst Fragen aufwerfen, insbesondere wenn Sie stoßen auf Code, der Zeiger auf unbenannte Typen als Argumente enthält. Dies liegt daran, dass dem Funktionsargument ein Name fehlt, was es scheinbar unmöglich macht, innerhalb der Funktion darauf zu verweisen.

Zweck unbenannter Argumente

Unbenannte Parameter in Go sind keine Seltenheit . Gemäß der Parameterdeklarationsspezifikation ist die IdentifierList (der oder die Bezeichnernamen) optional, d. h. sie ist für Funktions- oder Methodenparameter nicht obligatorisch. Der Typ ist das einzige wesentliche Element.

Der Bedarf an unbenannten Parametern entsteht, wenn die Identität des Parameters für das Verhalten der Funktion irrelevant ist. Die Reihenfolge und die Typen der Parameter sind entscheidend, nicht ihre Namen.

Warum unbenannte Argumente verwenden?

Es gibt mehrere Gründe, warum man sich für die Verwendung unbenannter Argumente entscheiden könnte :

  • Unnötige Argumente: In Fällen, in denen ein Parameter der Vollständigkeit halber oder zur Erfüllung der Anforderungen vorhanden ist B. eine Schnittstellen- oder Signaturanforderung, aber nicht in der Funktion verwendet wird, kann sie unbenannt bleiben.
  • Vorwärtskompatibilität: Vorwärtskompatibilität ist ein weiterer Grund. Bibliotheken können Funktionen mit zusätzlichen Parametern deklarieren, diese jedoch zunächst unbenannt lassen. Dies ermöglicht eine zukünftige Verwendung, ohne die Abwärtskompatibilität zu beeinträchtigen.
  • Wert verwerfen: Wenn eine Funktion einen bestimmten Argumenttyp erwartet, sein Wert jedoch keine Bedeutung hat, kann das Argument unbenannt und ungenutzt bleiben .

Beispiel:

Stellen Sie sich eine Schnittstelle namens MyWriter vor definiert eine Write-Methode:

type MyWriter interface {
    Write(p []byte) error
}
Nach dem Login kopieren

Um eine einfache Implementierung dieser Schnittstelle bereitzustellen, die die Daten verwirft, könnten Sie einen DiscardWriter erstellen:

type DiscardWriter struct{}

func (DiscardWriter) Write([]byte) error { return nil }
Nach dem Login kopieren

In diesem Beispiel sind sowohl der Empfänger als auch Die Argumente sind unbenannt, da sie nicht verwendet werden.

Sonstige Überlegungen:

unbenannte Parameter. Sie müssen alle Parameter benennen, wenn Sie sich für die Benennung von Parametern entscheiden. Sie können den leeren Bezeichner in Situationen wie dieser verwenden:

// Responds with "Hello" to all HTTP requests
http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
    io.WriteString(w, "Hello")
})
Nach dem Login kopieren

Zusätzliche Ressourcen:

  • [Namen von Methodenparametern abrufen Golang](https://stackoverflow.com/questions/26838313/getting-method-parameter-names-in-golang)
  • [Karte wie „ok“ in Golang auf Normal zurückgeben Funktionen](https://stackoverflow.com/questions/49873564/return-map-like-ok-in-golang-on-normal-functions)
  • [Warum müssen wir beim Hinzufügen von a einen Variablennamen deklarieren? Methode zu einer Struktur in Golang?](https://stackoverflow.com/questions/33357684/why-must-we-declare-a-variable-name-when-adding-a-method-to-a-struct-in-golang)

Das obige ist der detaillierte Inhalt vonUnterstützt Go unbenannte Funktionsargumente?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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 Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage