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

Contoh antara muka Small Go: bukti kad pengenalan

Patricia Arquette
Lepaskan: 2025-01-12 11:01:41
asal
382 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
  • 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>
Salin selepas log masuk
  • 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan