Heim >Backend-Entwicklung >Golang >Beispiel für Small Go-Schnittstellen: Nachweis von Personalausweisen

Beispiel für Small Go-Schnittstellen: Nachweis von Personalausweisen

Patricia Arquette
Patricia ArquetteOriginal
2025-01-12 11:01:41384Durchsuche

Small Go interfaces example: proof of identity cards

Dieses Tutorial demonstriert Go-Schnittstellen für Anfänger. Wir erstellen eine ProofOfId-Schnittstelle zur Definition von Methoden für Ausweisdokumente (Personalausweis, Führerschein, Reisepass) und eine CountriesList-Schnittstelle zur Auflistung von Ländern. Dies veranschaulicht, wie Schnittstellen als eine Form von Polymorphismus funktionieren und die Vererbung in anderen Sprachen ersetzen.

Projekteinrichtung

  1. Erstellen Sie ein Projektverzeichnis: mkdir proof-of-identity-checker && cd proof-of-identity-checker
  2. Initialisieren Sie ein Go-Modul: go mod init <yourname>/proof-of-identity-checker (ersetzen Sie <yourname> durch Ihren Namen oder eine geeignete Kennung).
  3. Öffnen Sie das Verzeichnis in Ihrem Code-Editor.

Schnittstellen definieren (interfaces.go)

<code class="language-go">package main

import "time"

type ProofOfId interface {
    getExpDate() time.Time
    getName() string
    getObtentionDate() time.Time
}

type CountriesList interface {
    getCountries() []string
}</code>

ProofOfId erfordert getExpDate(), getName() und getObtentionDate(). CountriesList erfordert getCountries().

Schnittstellenbasierte Funktionen (main.go)

<code class="language-go">package main

import "time"

// IdentityVerification checks if a proof of ID is valid (date-based).
func IdentityVerification(proof ProofOfId) bool {
    // ... (Date comparison logic would go here.  See the provided link for details.)
    return proof.getExpDate().After(time.Now()) //Example: Check if expiration date is in the future.
}

// DisplayVisitedCountries prints a list of visited countries.
func DisplayVisitedCountries(passport CountriesList) {
    countries := passport.getCountries()
    println("Visited countries:")
    for _, country := range countries {
        println(country)
    }
}</code>

Identitätsdokumenttypen implementieren

  • Personalausweis (idcard.go)
<code class="language-go">package main

import "time"

type IdCard struct {
    Name          string
    ObtentionDate time.Time
    ExpDate       time.Time
}

func (card IdCard) getName() string {
    return card.Name
}

func (card IdCard) getExpDate() time.Time {
    return card.ExpDate
}

func (card IdCard) getObtentionDate() time.Time {
    return card.ObtentionDate
}</code>
  • Führerschein (driver-license.go)
<code class="language-go">package main

import "time"

type DriverLicense struct {
    Name          string
    ObtentionDate time.Time
    ExpDate       time.Time
    Enterprise    string
}

func (license DriverLicense) getName() string {
    return license.Name
}

func (license DriverLicense) getExpDate() time.Time {
    return license.ExpDate
}

func (license DriverLicense) getObtentionDate() time.Time {
    return license.ObtentionDate
}

func (license DriverLicense) getEnterprise() string {
    return license.Enterprise
}</code>
  • Reisepass (passport.go)
<code class="language-go">package main

import "time"

type Passport struct {
    Name             string
    ObtentionDate    time.Time
    ExpDate          time.Time
    VisitedCountries []string
}

func (passport Passport) getName() string {
    return passport.Name
}

func (passport Passport) getExpDate() time.Time {
    return passport.ExpDate
}

func (passport Passport) getObtentionDate() time.Time {
    return passport.ObtentionDate
}

func (passport Passport) getCountries() []string {
    return passport.VisitedCountries
}</code>

Testen (main.goFortsetzung)

<code class="language-go">func main() {
    idCard := IdCard{ObtentionDate: time.Now().Add(24 * time.Hour), ExpDate: time.Now().Add(730 * 24 * time.Hour)}
    driverLicense := DriverLicense{ObtentionDate: time.Now().Add(-24 * time.Hour), ExpDate: time.Now().Add(365 * 24 * time.Hour)}
    passport := Passport{ObtentionDate: time.Now().Add(-24 * time.Hour), ExpDate: time.Now().Add(-1 * time.Hour), VisitedCountries: []string{"France", "Spain", "Belgium"}}

    println(IdentityVerification(idCard))
    println(IdentityVerification(driverLicense))
    println(IdentityVerification(passport))

    DisplayVisitedCountries(passport)
}</code>

Mit go run .

ausführen

Fazit

Dieses Beispiel zeigt, wie Go-Schnittstellen flexiblen Code ermöglichen, indem sie Verträge zwischen Objekten definieren und so die Wiederverwendbarkeit und Wartbarkeit des Codes fördern. Der bereitgestellte Link zum Datumsvergleich sollte konsultiert werden, um die Datumsprüfungslogik der IdentityVerification-Funktion zu vervollständigen.

Das obige ist der detaillierte Inhalt vonBeispiel für Small Go-Schnittstellen: Nachweis von Personalausweisen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Einrichten Ihrer Go-UmgebungNächster Artikel:Einrichten Ihrer Go-Umgebung