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 サイトの他の関連記事を参照してください。