ホームページ  >  記事  >  バックエンド開発  >  「interface{}」のマップを反復処理し、Golang のすべての項目に対して同じメソッドを呼び出します

「interface{}」のマップを反復処理し、Golang のすべての項目に対して同じメソッドを呼び出します

王林
王林転載
2024-02-05 11:57:54598ブラウズ

迭代“interface{}”的映射并在 Golang 中的每个项目上调用相同的方法

質問内容

囲碁を学ぶための簡単なコンソールゲームを開発していますが、他の言語にはない一見単純な問題で行き詰まってしまいました。 Goでは問題ありませんが、Goではほぼ不可能のようです。

次のような構造体のフィールドとしてインターフェイスをマップしました:

リーリー

マップを反復処理し、マップに格納されているアイテムごとに render() メソッドを呼び出す必要があります (すべてのアイテムが render() メソッドを実装していると仮定します。たとえば、 js または php、これは問題にはなりませんが、私は go で一日中壁に頭をぶつけていました。

次のようなものが必要です:

リーリー

これは機能しませんでしたが、タイプを指定して各項目を個別に手動で呼び出すと、機能しました。 リーリー

マップ内の各アイテムに対して

render() メソッドを呼び出す方法は?または、この問題を解決するためのより良い/別の方法がある場合は、ここで途方に暮れているので教えてください。


正解


インターフェイスの定義:

リーリー

次に、アサーション マップ要素を入力し、そのメソッドが実装されている限り render を呼び出すことができます。 リーリー

何かがレンダリング可能かどうかをテストするには、次を使用します:

リーリー

以上が「interface{}」のマップを反復処理し、Golang のすべての項目に対して同じメソッドを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。