ホームページ >バックエンド開発 >Golang >Small Go インターフェイスの例: ID カードの証明

Small Go インターフェイスの例: ID カードの証明

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-12 11:01:41435ブラウズ

Small Go interfaces example: proof of identity cards

このチュートリアルでは、初心者向けに Go インターフェイスを説明します。身分証明書 (ID カード、運転免許証、パスポート) のメソッドを定義する ProofOfId インターフェースと、国をリストするための CountriesList インターフェースを作成します。 これは、インターフェイスが他の言語の継承を置き換えて、ポリモーフィズムの一形態としてどのように機能するかを示しています。

プロジェクトのセットアップ

  1. プロジェクトディレクトリを作成します: mkdir proof-of-identity-checker && cd proof-of-identity-checker
  2. Go モジュールを初期化します: go mod init <yourname>/proof-of-identity-checker (<yourname> を自分の名前または適切な識別子に置き換えます)。
  3. コードエディタでディレクトリを開きます。

インターフェースの定義 (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 には getExpDate()getName()、および getObtentionDate() が必要です。 CountriesList には getCountries() が必要です。

インターフェースベースの関数 (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>

ID ドキュメントタイプの実装

  • 身分証明書 (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>

テスト (main.go 続き)

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

go run .

で実行

結論

この例は、Go インターフェースがオブジェクト間のコントラクトを定義し、コードの再利用性と保守性を促進することにより、どのように柔軟なコードを可能にするかを示しています。 IdentityVerification 関数の日付チェック ロジックを完了するには、日付比較用に提供されているリンクを参照してください。

以上がSmall Go インターフェイスの例: ID カードの証明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。