Goで関数パラメータを使用して型アサーションを実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-02 00:18:02
オリジナル
599 人が閲覧しました

How to Perform Type Assertion with Function Parameters in Go?

関数パラメータによる型アサーション

型アサーションを実行する際に、特定の型を関数に渡そうとします。具体的には、以下の仮説関数に示すように、指定された型と確実に一致できる関数宣言を実現することを目指します。

// Note: Type isn't a valid type to use in Go
func myfunction(mystring string, mytype Type) {
    ...

    someInterface := translate(mystring)
    object, ok := someInterface.(mytype)

    ...  // Do other stuff
}
ログイン後にコピー

myfunction 内で型アサーションを正常に実装するには、関数を変更する必要があります。 mytype の Interface{} パラメータを受け入れる宣言。{}これを実現する方法は次のとおりです。

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}
ログイン後にコピー

このアプローチでは、reflect パッケージを利用して、v パラメーターの型を提供された mytype インターフェイスと比較します。型が一致するかどうかを示すブール値を返します。

この関数の利用方法を示す例を次に示します。

package main

import (
    "fmt"
    "reflect"
)

func main() {

    assertNoMatch := myfunction("hello world", map[string]string{})

    fmt.Printf("%+v\n", assertNoMatch)

    assertMatch := myfunction("hello world", "stringSample")

    fmt.Printf("%+v\n", assertMatch)

}
ログイン後にコピー

この例では、myfunction は、タイプが一致するかどうかを正しく判断します。指定された値は指定された型と一致し、それに応じてブール値を返します。

以上がGoで関数パラメータを使用して型アサーションを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!