ホームページ >バックエンド開発 >Golang >Goで関数パラメータを使用して型アサーションを実行するにはどうすればよいですか?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 00:18:02722ブラウズ

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 サイトの他の関連記事を参照してください。

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