Wert in „type abc interface{}' einfügen

WBOY
Freigeben: 2024-02-10 20:39:17
nach vorne
725 Leute haben es durchsucht

将值插入“type abc interface{}”

Der PHP-Editor Xiaoxin stellt Ihnen hier eine Methode zum Einfügen von Werten in „Typ ABC-Schnittstelle {}“ vor. In PHP verwenden wir häufig Schnittstellen, um eine Reihe von Spezifikationen zu definieren. Manchmal stoßen wir auf Situationen, in denen wir einen Standardwert in der Schnittstelle definieren müssen. Zu diesem Zeitpunkt können wir Merkmale (Merkmale) verwenden, um diese Funktion zu erreichen. Ein Merkmal ist ein Codestück, das von mehreren Klassen gemeinsam genutzt werden kann. Mithilfe von Merkmalen können wir Standardwerte in der Schnittstelle definieren und diese in der Klasse verwenden. Diese Methode ist einfach und leicht zu verstehen. Werfen wir einen Blick auf die spezifischen Implementierungsschritte!

Frageninhalt

Ich versuche, Werte in type abc [][] 接口{}

einzufügen

Ich habe Folgendes versucht:

insert := &abc{{0, {"abc", "def"}}}

Dies löst den Fehler aus: 无效的复合文字类型:接口{}

Das habe ich auch probiert:

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

Aber dies löst auch einen Fehler aus Invalid Composite Literal Type: interface{}

Ich möchte, dass die Ausgabe wie folgt aussieht:

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

Können Sie mir sagen, wo ich falsch liege und wie ich das beheben kann?

WORKAROUND

abc 的类型允许任何类型,但是需要定义您放入其中的内容的类型。您没有定义 {"abc", "def"} von Typ- und Schnittstellenliteralen können nicht instanziiert werden (Schnittstellen teilen dem Compiler nichts über die Felder mit). Sie können anonyme Strukturen haben, müssen diese aber trotzdem definieren.

Lassen Sie uns anhand eines Beispiels durchgehen, was Sie haben:

x := &abc{}
Nach dem Login kopieren

Erstellen Sie ein äußeres Array mit null Einträgen.

x := &abc{{}, {}, {}}
Nach dem Login kopieren

Erstellen Sie das äußere Array mit 3 leeren inneren Arrays.

x := &abc{{0, "abc"}}
Nach dem Login kopieren

Ein äußeres Array mit einem inneren Array mit 2 Werten: 0"abc".

x := &abc{{0, {"abc", "def"}}
Nach dem Login kopieren

Ein äußeres Array mit einem inneren Array mit 2 Werten: 0 和......什么?这是一个对象字面量,但没有显式类型,也没有语法上正确的隐式类型(隐式地期望 interface{}, kann nicht direkt instanziiert werden), das ist ein Fehler.

type pairofstrings struct {
  a string
  b string
}

x := &abc{{0, pairofstrings{"abc", "def"}}}
Nach dem Login kopieren

Sie haben nun die betreffende Struktur eingegeben.

x := &abc{{0, struct {
  a string
  b string
}{"abc", "def"}}}
Nach dem Login kopieren

Anonyme Strukturen sind ebenfalls ein hässlicher, aber effektiver Ansatz.

x := &abc{{0, []string{"abc", "def"}}}
Nach dem Login kopieren

scheint Ihren Wünschen am nächsten zu kommen.

Regeln sind interface{} 可以保存任何定义的东西。它不等同于 c# 的 dynamic Objekte.

Das obige ist der detaillierte Inhalt vonWert in „type abc interface{}' einfügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!