「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Goで型アサーションのために型変数を関数に渡す方法は?

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

2024 年 11 月 8 日に公開
ブラウズ:131

How to Pass Type Variables to Functions for Type Assertions in 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)
}

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

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
}

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3