Maison >développement back-end >Golang >Comment convertir efficacement les chaînes de jours de la semaine en time.Weekday dans Go ?

Comment convertir efficacement les chaînes de jours de la semaine en time.Weekday dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 13:10:34251parcourir

How Do I Convert Weekday Strings to time.Weekday in Go Efficiently?

Analyser la chaîne du jour de la semaine en heure.Jour de la semaine : une approche idiomatique avec une carte

Conversion d'une chaîne de jour de la semaine en une heure correspondante.Valeur du jour de la semaine dans Go nécessite une solution personnalisée car il n'existe aucune fonctionnalité intégrée pour cette conversion. Bien que la fonction basée sur un tableau présentée fournisse une solution réalisable, une approche basée sur une carte offre des avantages en termes d'efficacité et de flexibilité.

Solution améliorée utilisant une carte

Au lieu d'utiliser un tableau, utilisant une carte avec des chaînes de jours de la semaine comme clés et leur heure correspondante. Les valeurs des jours de la semaine en tant que valeurs accélèrent considérablement les recherches et simplifient le code :

<code class="go">var daysOfWeek = map[string]time.Weekday{
    "Sunday":    time.Sunday,
    "Monday":    time.Monday,
    "Tuesday":   time.Tuesday,
    "Wednesday": time.Wednesday,
    "Thursday":  time.Thursday,
    "Friday":    time.Friday,
    "Saturday":  time.Saturday,
}

func parseWeekday(v string) (time.Weekday, error) {
    if d, ok := daysOfWeek[v]; ok {
        return d, nil
    }

    return time.Sunday, fmt.Errorf("invalid weekday '%s'", v)
}</code>

Avantages de l'approche basée sur la carte

  • Recherches plus rapides : Les cartes fournissent un temps de recherche O(1), ce qui les rend plus efficaces que l'itération dans un tableau.
  • Initialisation simple : L'initialisation d'une carte est plus facile, surtout lorsqu'elle est effectuée avec une boucle for, comme le montre cet exemple :
<code class="go">var daysOfWeek = map[string]time.Weekday{}

func init() {
    for d := time.Sunday; d <= time.Saturday; d++ {
        daysOfWeek[d.String()] = d
    }
}</code>

Agrandissement de la carte pour une entrée supplémentaire

Cette approche basée sur une carte permet également l'ajout flexible de nouvelles valeurs valides qui peuvent être analysées dans le temps.Weekday. Par exemple, des noms de jours de semaine courts à 3 lettres peuvent être inclus avec une simple boucle :

<code class="go">var daysOfWeek = map[string]time.Weekday{}

func init() {
    for d := time.Sunday; d <= time.Saturday; d++ {
        name := d.String()
        daysOfWeek[name] = d
        daysOfWeek[name[:3]] = d
    }
}</code>

Cette extension permet d'analyser à la fois les noms de jours de semaine complets (par exemple, "Lundi") et les noms de jours de semaine courts (par exemple, "Mon ") en time.Weekday.

L'utilisation d'une carte dans ce contexte offre un moyen plus rapide, plus pratique et extensible d'analyser les chaînes de la semaine en valeurs time.Weekday dans Go.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn