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

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

Patricia Arquette
Freigeben: 2025-01-12 11:01:41
Original
435 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
  • 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>
Nach dem Login kopieren
  • 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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