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

Berechnen Sie die Scheibenlänge im Strukturfeld

WBOY
WBOYnach vorne
2024-02-09 14:09:19542Durchsuche

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
}

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

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
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen