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

tatasusunan pilihan dalam struktur

WBOY
Lepaskan: 2024-02-05 23:15:14
ke hadapan
1005 orang telah melayarinya

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"`
}
Salin selepas log masuk
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,
        })
    }

    ...
}
Salin selepas log masuk

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 {
  ...
}
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

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

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan