ホームページ  >  記事  >  バックエンド開発  >  「type abc インターフェース{}」に値を挿入します

「type abc インターフェース{}」に値を挿入します

WBOY
WBOY転載
2024-02-10 20:39:17726ブラウズ

将值插入“type abc interface{}”

php エディタ Xiaoxin は、「type abc Interface{}」に値を挿入する方法を紹介します。 PHP では、インターフェイスを使用して一連の仕様を定義することがよくあります。場合によっては、インターフェイスでデフォルト値を定義する必要がある状況に遭遇することがあります。このとき、トレイト(特徴)を利用してこの機能を実現することができます。トレイトとは複数のクラスで共有できるコードのことで、トレイトを利用することでインターフェースにデフォルト値を定義し、クラス内で使用することができます。この方法はシンプルで分かりやすいので、具体的な実装手順を見ていきましょう!

質問内容

type abc [][] インターフェイス {}

に値を挿入しようとしています

これを試してみました:

挿入 := &abc{{0, {"abc", "def"}}}

これにより、エラーが発生します: 無効な複合リテラル タイプ: インターフェイス {}

私もこれを試してみました:

insert, _ := json.Marshal([][]interface{}{{0, {"abc", "def"}}})

ただし、これによりエラーも発生します。無効な複合リテラル タイプ: インターフェイス{}

出力を次のようにしたい:

[ [ 0, [ "abc", "def" ] ]

どこが間違っているのか、またその修正方法を教えていただけますか?

回避策

abc のタイプでは任意のタイプを使用できますが、そこに入れるコンテンツのタイプを定義する必要があります。 {"abc", "def"} に型が定義されていないため、インターフェイス リテラルをインスタンス化できません (インターフェイスはフィールドについてコンパイラに何も伝えません)。匿名の構造体を使用することもできますが、それらを定義する必要があります。

例を挙げて説明してみましょう:

リーリー

エントリがゼロの外部配列を作成します。

リーリー

3 つの空の内部配列を使用して外部配列を作成します。

リーリー

2 つの値を持つ内部配列を持つ外部配列: 0"abc"

リーリー

外部配列と内部配列、2 つの値: 0 そして...何?これはオブジェクト リテラルですが、明示的な型がなく、構文的に正しい暗黙的な型もありません (暗黙的に interface{} を期待しており、直接インスタンス化できません)、これはエラーです。

リーリー

これで、問題の構造が入力されました。

リーリー

匿名構造も醜いですが効果的なアプローチです。

リーリー

はあなたが望むものに最も近いようです。

ルールは interface{} で定義されたものはすべて保存できます。これは、C# の dynamic オブジェクトと同等ではありません。

以上が「type abc インターフェース{}」に値を挿入しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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