Heim > Backend-Entwicklung > Golang > Wie ermöglichen die Schnittstellen und Go 1.18-Generika von Go die Programmierung generischer Funktionen?

Wie ermöglichen die Schnittstellen und Go 1.18-Generika von Go die Programmierung generischer Funktionen?

DDD
Freigeben: 2024-12-28 18:00:23
Original
273 Leute haben es durchsucht

How Do Go's Interfaces and Go 1.18 Generics Enable Generic Function Programming?

Generische Funktionen in Go: Enthüllung des Zusammenspiels von Schnittstellen und Go 1.18

In Go besteht die Möglichkeit, mit Werten unterschiedlichen Typs zu arbeiten ein entscheidender Aspekt der Programmierung. Dieser Artikel untersucht die Verwendung von Schnittstellen, einem grundlegenden Designkonzept in Go, um diese Funktionalität zu erreichen.

Nutzung von Schnittstellen für generische Funktionen

Wie in der Dokumentation erwähnt, leer Schnittstellen können Werte jeden Typs akzeptieren. Dies liegt daran, dass es ihnen an spezifischen Methodenvorgaben mangelt. Betrachten Sie das folgende Beispiel:

func describe(i interface{}) {
    fmt.Printf("Type: %T | Value: %v\n", i, i)
}
Nach dem Login kopieren

Diese Funktion kann Werte verschiedener Typen verarbeiten, wie unten gezeigt:

describe(5) // "Type: int | Value: 5"
describe("test") // "Type: string | Value: test"
Nach dem Login kopieren

Dieser Ansatz stellt eine rudimentäre Form generischer Funktionalität bereit, die dieselbe Funktion ermöglicht um mehrere Typen zu verarbeiten, ohne dass typspezifische Implementierungen erforderlich sind.

Go 1.18: Eine neue Ära für Generic Programmierung

Mit der Einführung von Go 1.18 wurde jedoch eine explizitere und leistungsfähigere Möglichkeit zur Definition generischer Funktionen verfügbar. Dies wird durch die Verwendung von Typparametern und Generika erreicht.

package main

import (
    "fmt"
)

// T can be any type
func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}

func main() {
    // Passing list of string works
    Print([]string{"Hello, ", "world\n"})

    // You can pass a list of int to the same function as well
    Print([]int{1, 2})
}
Nach dem Login kopieren

Ausgabe:

Hello, world
12
Nach dem Login kopieren

Diese neue Syntax ermöglicht die Definition generischer Funktionen, die auf jedem Typ ausgeführt werden können, was eine weitere Verbesserung darstellt die Flexibilität und Typsicherheit von Go-Code. Generische Funktionen in Go 1.18 bieten einen präziseren und robusteren Ansatz für die Handhabung mehrerer Typen, sodass keine typspezifischen Funktionsimplementierungen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie ermöglichen die Schnittstellen und Go 1.18-Generika von Go die Programmierung generischer Funktionen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage