Können die variadischen Funktionen von Go allgemeiner gestaltet werden?

Susan Sarandon
Freigeben: 2024-10-27 19:57:30
Original
956 Leute haben es durchsucht

 Can Go's Variadic Functions Be Made More Generic?

Erleichterung generischer Variadic-Funktionen in Go

Obwohl Go möglicherweise keine inhärente Unterstützung für generische Programmierung oder Funktionsüberladung bietet, ermöglicht es ein gewisses Maß an Flexibilität beim Umgang mit Variadic Funktionen.

Stellen Sie sich das häufige Szenario vor, in dem Sie über mehrere Funktionen wie die folgenden verfügen:

<code class="go">func (this Document) GetString(name string, defaults ...string) string {
    // ... Function implementation
}

func (this Document) GetInt(name string, defaults ...int) int {
    // ... Function implementation
}</code>
Nach dem Login kopieren

Bei diesen Funktionen kann es zu Codeduplizierungen kommen. Gibt es eine Möglichkeit, diese Redundanz zu minimieren?

Ja, obwohl es in Go keine generischen Vorlagen gibt, können Sie interface{} nutzen, um eine generische Lösung bereitzustellen.

<code class="go">func (this Document) Get(name string, defaults ...interface{}) interface{} {
    // ... Function implementation
    // This function returns `interface{}` instead of specific types.
}</code>
Nach dem Login kopieren

Dieser Ansatz ermöglicht Ihnen die Interaktion mit der Funktion auf folgende Weise:

<code class="go">value := document.Get("index", 1).(int) // Type casting is required</code>
Nach dem Login kopieren

Wenn Sie Nullwerte bevorzugen, können Sie diesen Ansatz verwenden:

<code class="go">value, ok := document.Get("index", 1).(int) // Returns `ok` to indicate type compatibility</code>
Nach dem Login kopieren

Dieser Ansatz kann jedoch zu Laufzeitaufwand führen. Es ist ratsam, Ihre Codestruktur zu bewerten und festzustellen, ob separate Funktionen oder eine andere Lösung für Ihre spezifischen Anforderungen besser geeignet sind.

Das obige ist der detaillierte Inhalt vonKönnen die variadischen Funktionen von Go allgemeiner gestaltet werden?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!