Rumah >pembangunan bahagian belakang >Golang >tatasusunan pilihan dalam struktur

tatasusunan pilihan dalam struktur

WBOY
WBOYke hadapan
2024-02-05 23:15:141045semak imbas

tatasusunan pilihan dalam struktur

Kandungan soalan

Saya mahu menjadikan tatasusunan pilihan dalam struktur dan menggunakannya dengan if else dalam fungsi.

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,
        })
    }

    ...
}

Apabila saya menjalankan kod, ia memberitahu saya bahawa defaulttests ialah tatasusunan yang tidak ditentukan tetapi saya tidak mahu ralat ini muncul kerana defaulttests boleh wujud dan kadangkala ia tidak muncul dalam json dan itulah sebabnya saya mahu menjadikannya sebagai alasan pilihan . Bahagian if else juga tidak berfungsi.


Jawapan betul


Apabila menyemak sama ada tatasusunan kosong, sebaiknya gunakan len() .

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

Semak nilai sifar ujian lalai dalam struktur di bawah untuk memahami tingkah laku ini dengan lebih jelas

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)
    }
}

Atas ialah kandungan terperinci tatasusunan pilihan dalam struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam