Heim > Backend-Entwicklung > Golang > Berechnen Sie die Scheibenlänge im Strukturfeld

Berechnen Sie die Scheibenlänge im Strukturfeld

WBOY
Freigeben: 2024-02-09 14:09:19
nach vorne
581 Leute haben es durchsucht

Berechnen Sie die Scheibenlänge im Strukturfeld

php-Editor Yuzai zeigt Ihnen, wie Sie die Slice-Länge im Strukturfeld berechnen. In der Programmierung ist eine Struktur eine Datenstruktur, die zum Organisieren zusammengehöriger Daten verwendet wird. In einigen Fällen müssen wir möglicherweise die Slice-Länge im Strukturfeld berechnen, um entsprechende Vorgänge im Programm auszuführen. Die Berechnung der Schnittlänge eines Strukturfelds kann uns helfen, Daten besser zu verstehen und zu verarbeiten sowie die Effizienz und Genauigkeit des Programms zu verbessern. Als nächstes erläutern wir die Durchführung der Berechnung im Detail und geben entsprechende Beispiele.

Frageninhalt

Ich glaube, ich brauche eine bessere Lösung als die Groß-/Kleinschreibung, da die Struktur mehr Felder erhält und meine Funktion ausführlicher wird. Gibt es eine Möglichkeit, meinen Schalter auf Schleife umzustellen?

Ich habe den folgenden Code

type things struct {
    streetnames    []string `json:"streetnames"`
    letters        []string `json:"letters"`
    malenames      []string `json:"malenames"`
}

func checkcategories(data *things, filepath string) error {
    errmsg := "list has no values or is a missing category in file: " + filepath
    categories := []string{"street_name", "letter", "male_first_name"}
    for _, value := range categories {
        switch value {
        case "street_name":
            if len(data.streetnames) == 0 {
                return errors.new("street_name " + errmsg)
            }
        case "letter":
            if len(data.letters) == 0 {
                return errors.new("letter " + errmsg)
            }
        case "male_first_name":
            if len(data.malenames) == 0 {
                return errors.new("male_first_name " + errmsg)
            }
        }
    }
    return nil
}
Nach dem Login kopieren

Das funktioniert bei mir, aber die tatsächliche Struktur enthält 12 Felder, was meine Funktion langwierig und repetitiv macht.

Ich habe es versucht

for _, value := range categories {
        if len("data." + value) == 0 {
            return errors.New(value + errMsg)
}
Nach dem Login kopieren

Aber als ich den Code ausführte, brauchte ich einen Moment, um zu bemerken, dass er nicht wie erwartet funktionierte, ich bekam die Länge der Zeichenfolge. Ich habe data[value] ausprobiert, aber das funktioniert auch nicht.

Lösung

Gibt es eine Möglichkeit, meinen Schalter auf Schleife umzustellen?

Sie können Folgendes tun:

type Things struct {
    StreetNames []string `json:"streetNames"`
    Letters     []string `json:"letters"`
    MaleNames   []string `json:"maleNames"`
}

func CheckCategories(data *Things, filePath string) error {
    errMsg := "list has no values or is a missing category in File: " + filePath
    categories := []struct{
        name  string
        slice []string
    }{
        {"street_name", data.StreetNames},
        {"letter", data.Letters},
        {"male_first_name", data.MaleNames},
    }

    for _, v := range categories {
        if len(v.slice) == 0 {
            return errors.New(v.name + " " + errMsg)
        }
    }
    return nil
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBerechnen Sie die Scheibenlänge im Strukturfeld. 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