Heim >Backend-Entwicklung >Golang >Beispiel für Small Go-Schnittstellen: Nachweis von Personalausweisen
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
mkdir proof-of-identity-checker && cd proof-of-identity-checker
go mod init <yourname>/proof-of-identity-checker
(ersetzen Sie <yourname>
durch Ihren Namen oder eine geeignete Kennung).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
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>
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>
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.go
Fortsetzung)
<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 .
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!