Maison > développement back-end > Golang > Insérez la valeur dans 'type abc interface{}'

Insérez la valeur dans 'type abc interface{}'

WBOY
Libérer: 2024-02-10 20:39:17
avant
770 Les gens l'ont consulté

将值插入“type abc interface{}”

L'éditeur de PHP, Xiaoxin, vous présentera une méthode d'insertion de valeurs dans "type abc interface{}". En PHP, on utilise souvent des interfaces pour définir un ensemble de spécifications. Parfois, nous rencontrons des situations où nous devons définir une valeur par défaut dans l'interface. À l’heure actuelle, nous pouvons utiliser des traits (caractéristiques) pour réaliser cette fonction. Un trait est un morceau de code qui peut être partagé par plusieurs classes. En utilisant des traits, nous pouvons définir des valeurs par défaut dans l'interface et les utiliser dans la classe. Cette méthode est simple et facile à comprendre, jetons un œil aux étapes spécifiques de mise en œuvre !

Contenu de la question

J'essaie d'insérer des valeurs dans type abc [][] 接口{}

J'ai essayé ceci :

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

Cela renvoie l'erreur : 无效的复合文字类型:接口{}

J'ai aussi essayé ceci :

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

Mais cela génère également une erreur Invalid Composite Literal Type: interface{}

Je veux que le résultat soit le suivant :

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

Pouvez-vous me dire où je me trompe et comment résoudre ce problème ?

Solution

abc 的类型允许任何类型,但是需要定义您放入其中的内容的类型。您没有定义 {"abc", "def"} des littéraux de type et d'interface ne peuvent pas être instanciés (les interfaces ne disent rien au compilateur sur les champs). Vous pouvez avoir des structures anonymes, mais vous devez quand même les définir.

Voyons ce que vous avez avec un exemple :

x := &abc{}
Copier après la connexion

Créez un tableau externe avec zéro entrée.

x := &abc{{}, {}, {}}
Copier après la connexion

Créez le tableau externe en utilisant 3 tableaux internes vides.

x := &abc{{0, "abc"}}
Copier après la connexion

Un tableau externe avec un tableau interne avec 2 valeurs : 0"abc".

x := &abc{{0, {"abc", "def"}}
Copier après la connexion

Un tableau externe avec un tableau interne avec 2 valeurs : 0 和......什么?这是一个对象字面量,但没有显式类型,也没有语法上正确的隐式类型(隐式地期望 interface{} , ne peut pas être instancié directement), c'est une erreur.

type pairofstrings struct {
  a string
  b string
}

x := &abc{{0, pairofstrings{"abc", "def"}}}
Copier après la connexion

Vous êtes désormais entré dans la structure en question.

x := &abc{{0, struct {
  a string
  b string
}{"abc", "def"}}}
Copier après la connexion

Les structures anonymes sont également une approche laide mais efficace.

x := &abc{{0, []string{"abc", "def"}}}
Copier après la connexion

semble être la chose la plus proche de ce que vous voulez.

Les règles sont interface{} 可以保存任何定义的东西。它不等同于 c# 的 dynamic des objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal