Rumah >pembangunan bahagian belakang >Golang >Contoh antara muka Small Go: bukti kad pengenalan

Contoh antara muka Small Go: bukti kad pengenalan

Patricia Arquette
Patricia Arquetteasal
2025-01-12 11:01:41487semak imbas

Small Go interfaces example: proof of identity cards

Tutorial ini menunjukkan antara muka Go untuk pemula. Kami akan mencipta ProofOfId kaedah penentuan antara muka untuk dokumen pengenalan diri (kad ID, lesen memandu, pasport) dan antara muka CountriesList untuk penyenaraian negara. Ini menggambarkan cara antara muka berfungsi sebagai satu bentuk polimorfisme, menggantikan warisan dalam bahasa lain.

Persediaan Projek

  1. Buat direktori projek: mkdir proof-of-identity-checker && cd proof-of-identity-checker
  2. Mulakan modul Go: go mod init <yourname>/proof-of-identity-checker (gantikan <yourname> dengan nama anda atau pengecam yang sesuai).
  3. Buka direktori dalam editor kod anda.

Mentakrifkan Antara Muka (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 memerlukan getExpDate(), getName() dan getObtentionDate(). CountriesList memerlukan getCountries().

Fungsi Berasaskan Antara Muka (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>

Melaksanakan Jenis Dokumen Identiti

  • Kad Pengenalan (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>
  • Lesen Pemandu (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>
  • Pasport (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>

Ujian (main.go diteruskan)

<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>

Lari dengan go run .

Kesimpulan

Contoh ini menunjukkan cara antara muka Go mendayakan kod fleksibel dengan mentakrifkan kontrak antara objek, mempromosikan kebolehgunaan semula kod dan kebolehselenggaraan. Pautan yang disediakan untuk perbandingan tarikh hendaklah dirujuk untuk melengkapkan logik penyemakan tarikh fungsi IdentityVerification.

Atas ialah kandungan terperinci Contoh antara muka Small Go: bukti kad pengenalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn