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

王林
リリース: 2024-02-05 11:57:54
転載
611 人が閲覧しました

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

質問内容

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

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

リーリー

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

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

リーリー

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

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

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


正解


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

リーリー

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

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

リーリー

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

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