ホームページ > バックエンド開発 > Golang > インターフェイス{}からの変換後に、map[string]*Book を安全に反復処理する方法

インターフェイス{}からの変換後に、map[string]*Book を安全に反復処理する方法

Susan Sarandon
リリース: 2024-12-01 11:53:11
オリジナル
582 人が閲覧しました

How to Safely Iterate Over a map[string]*Book After Converting from interface{}?

繰り返しによるインターフェース{}のマップへの変換

コード内で、インターフェース{}をマップに変換しようとしているときにエラーが発生しました。この問題を解決し、マップ要素の反復を有効にするには、次の手順に従います。

アサーションを使用する:

で示すように、リフレクション ベースのアプローチを直接型アサーションに置き換えます。以下のコード:

func process(in interface{}, isSlice bool, isMap bool) {
    if isMap {
        v := in.(map[string]*Book)
        fmt.Printf("Type: %v\n", v)
        for _, s := range v {
            fmt.Printf("Value: %v\n", s)
        }
    }
}
ログイン後にコピー

このアサーションは、interface{} 値をタイプ map[string]*Book の変数に割り当てます。条件が満たされた場合。このアプローチはより効率的であり、リフレクションを必要としません。

または、switch ステートメントを使用して、リフレクションを使用せずにさまざまなタイプの入力を処理できます。

リフレクションでカスタム マップ キーを使用する (オプション):

それでもリフレクションを使用する必要がある場合は、代わりに Value.MapKeys を使用してマップ キーを取得できます。値を直接反復処理します。このアプローチの詳細については、提供されたソリューションに記載されている Stack Overflow の回答を参照してください。

以上がインターフェイス{}からの変換後に、map[string]*Book を安全に反復処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート