Maison  >  Article  >  développement back-end  >  tableau facultatif dans la structure

tableau facultatif dans la structure

WBOY
WBOYavant
2024-02-05 23:15:14979parcourir

tableau facultatif dans la structure

Contenu de la question

Je souhaite rendre un tableau facultatif dans une structure et l'utiliser avec if else dans une fonction.

type testvalues struct {
    test1 string `json:"test1"`
    defaulttests []string `json:"__tests"`

    //defaulttests *array `json:"__tests,omitempty" validate:"option"`
    test2 string `json:"__test2"`
}
func (x *Controller) createTest(context *gin.Context, uniqueId string, testBody *TestValues) (*http.Response, error) {

    if testBody.DefaultTags {
        postBody, err := json.Marshal(map[string]string{
            "Test2":              testBody.Test2,
            "Test1":                  testBody.Test1,
            "defaultTests":         testBody.DefaultTests,
            "uniqueId":                  uniqueId,
        })
    } else {
        postBody, err := json.Marshal(map[string]string{
            "Test2":              testBody.Test2,
            "Test1":                  testBody.Test1,
            "uniqueId":                  uniqueId,
        })
    }

    ...
}

Lorsque j'exécute le code, cela me dit que defaulttests est un tableau non défini mais je ne veux pas que cette erreur apparaisse car les defaulttests peuvent exister et parfois ils n'apparaissent pas dans le json et c'est pourquoi je veux le rendre facultatif. . La partie if else ne fonctionne pas non plus.


Bonne réponse


Lorsque vous vérifiez si un tableau est vide, il est préférable d'utiliser len() .

if len(testbody.defaulttests) > 0 {
  ...
}

Vérifiez la valeur zéro des tests par défaut dans la structure ci-dessous pour comprendre plus clairement ce comportement

package main

import "fmt"

type TestValues struct {
    Test1        string   `json:"test1"`
    DefaultTests []string `json:"__tests"`

    //DefaultTests *array `json:"__tests,omitempty" validate:"option"`
    Test2 string `json:"__Test2"`
}

func main() {
    var tv = TestValues{Test1: "test"}

    if len(tv.DefaultTests) > 0 {
        fmt.Printf("Default Tests: %v\n", tv.DefaultTests)
    } else {
        fmt.Printf("Default Tests empty value: %v\n", tv.DefaultTests)
    }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer