ホームページ  >  記事  >  バックエンド開発  >  Goで型アサーションのために型変数を関数に渡す方法は?

Goで型アサーションのために型変数を関数に渡す方法は?

DDD
DDDオリジナル
2024-10-30 22:24:30192ブラウズ

How to Pass Type Variables to Functions for Type Assertions in Go?

型アサーションのために関数に型変数を渡す

関数に型を渡すことで型アサーションを実行したいと考えています。基本的に、次のことを達成することを目的としています。

<code class="go">// Note that this is pseudocode, because Type isn't valid here
func myfunction(mystring string, mytype Type) {
    ...

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

    ...  // Do other stuff
}

func main() {
    // Desired function call
    myfunction("hello world", map[string]string)
}</code>

myfunction で型アサーションを正常に実行するには、次の関数宣言を使用します。

<code class="go">package main

import "reflect"

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}

func main() {
    assertNoMatch := myfunction("hello world", map[string]string{})
    fmt.Printf("%+v\n", assertNoMatch) // false

    assertMatch := myfunction("hello world", "stringSample")
    fmt.Printf("%+v\n", assertMatch) // true
}</code>

このアプローチには、型のサンプルの使用が含まれます。型アサーションが成功するためには型が同一であることを確認して、一致させる必要があります。

以上がGoで型アサーションのために型変数を関数に渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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