Maison > développement back-end > Golang > Exemple d'interfaces Small Go : justificatif de carte d'identité

Exemple d'interfaces Small Go : justificatif de carte d'identité

Patricia Arquette
Libérer: 2025-01-12 11:01:41
original
496 Les gens l'ont consulté

Small Go interfaces example: proof of identity cards

Ce tutoriel présente les interfaces Go pour les débutants. Nous allons créer une interface ProofOfId définissant les méthodes pour les documents d'identité (carte d'identité, permis de conduire, passeport) et une interface CountriesList pour lister les pays. Cela illustre comment les interfaces fonctionnent comme une forme de polymorphisme, remplaçant l'héritage dans d'autres langages.

Configuration du projet

  1. Créer un répertoire de projet : mkdir proof-of-identity-checker && cd proof-of-identity-checker
  2. Initialisez un module Go : go mod init <yourname>/proof-of-identity-checker (remplacez <yourname> par votre nom ou un identifiant adapté).
  3. Ouvrez le répertoire dans votre éditeur de code.

Définition des interfaces (interfaces.go)

package main

import "time"

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

type CountriesList interface {
    getCountries() []string
}
Copier après la connexion

ProofOfId nécessite getExpDate(), getName() et getObtentionDate(). CountriesList nécessite getCountries().

Fonctions basées sur l'interface (main.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)
    }
}
Copier après la connexion

Mise en œuvre des types de documents d'identité

  • Carte d'identité (idcard.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
}
Copier après la connexion
  • Permis de conduire (driver-license.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
}
Copier après la connexion
  • Passeport (passport.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
}
Copier après la connexion

Tests (main.gosuite)

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)
}
Copier après la connexion

Courez avec go run .

Conclusion

Cet exemple montre comment les interfaces Go permettent un code flexible en définissant des contrats entre les objets, favorisant ainsi la réutilisabilité et la maintenabilité du code. Le lien fourni pour la comparaison des dates doit être consulté pour compléter la logique de vérification des dates de la fonction IdentityVerification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal