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
mkdir proof-of-identity-checker && cd proof-of-identity-checker
go mod init <yourname>/proof-of-identity-checker
(gantikan <yourname>
dengan nama anda atau pengecam yang sesuai).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
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>
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!