ホームページ  >  記事  >  バックエンド開発  >  Go: マップとスライスでインターフェイスを使用する方法

Go: マップとスライスでインターフェイスを使用する方法

PHPz
PHPz転載
2024-02-10 20:57:081227ブラウズ

Go: マップとスライスでインターフェイスを使用する方法

php エディター Apple は、マップとスライスでインターフェイスを使用する方法を紹介します。最新の Web 開発では、マップとスライスが一般的な機能要件です。インターフェイスを使用すると、マップとタイルの操作がより柔軟でスケーラブルになります。この記事では、インターフェイスの概念と、インターフェイスを使用してマップやタイルにさまざまな機能を実装する方法について詳しく説明します。この記事を読むことで、マップとタイルの使用を最適化し、ユーザー エクスペリエンスとパフォーマンスを向上させる方法を学びます。この興味深いトピックを一緒に探ってみましょう!

質問の内容

これらの構造体が実行できる「追加の」操作を気にせずに、どちらかのインターフェイスの具体的な実装を使用できる関数を実行できるようにしたいため、インターフェイス マッピングが必要です。実行する。

https://jordanorelli.com/post/32665860244/how-to-use-interfaces-in-go を読みました。ポインターとインターフェイスについては詳しく説明されていますが、まだやり方がわかりません。実際に私が望むことを達成します。

次のコードを試しています:

https://play.golang.com/p/nrh2iyk7t9f

リーリー

出力:

リーリー

私が本当に望んでいるのは、要素 1 がキー「one」にあることです。

参照 foo[c.name] = &c を使用した代入によって問題が発生すると思います。そうしないと、「割り当ての iexample 値として c (concrete 型の変数) を使用できません: concrete は iexample を実装していません (メソッド getname にはポインター レシーバーがあります) 」というエラーが発生するため、これが必要です。

https://dusted.codes/using-go-generics-to-pass-struct-slices-for-interface-slices を読んだ後、ジェネリックスを使用して問題を解決できるかどうか疑問に思いましたが、それはできませんそれを解決する方法。

リーリー

このマップに正しい要素を含めるにはどうすればよいですか?

解決策

あなたのしたことは正しいです。間違ったものをマップに入力しているだけです:

リーリー

ループ変数は反復ごとに書き換えられるため、マップとスライスに

&c を追加すると、追加するポインタは c のアドレスとなり、上書きされます。反復ごとに。

以上がGo: マップとスライスでインターフェイスを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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