Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne de jour de la semaine en « time.Weekday » dans Go ?

Comment convertir une chaîne de jour de la semaine en « time.Weekday » dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 04:38:30776parcourir

How to Convert a Day of Week String to `time.Weekday` in Go?

Convertir la chaîne du jour de la semaine en heure.Weekday

Dans Go, le package time n'offre pas de fonction intégrée pour convertir une chaîne représentant un jour de la semaine dans une valeur time.Weekday. Ainsi, une solution courante consiste à créer une fonction personnalisée pour effectuer cette conversion.

Une approche consiste à utiliser un tableau pour stocker les noms des jours de la semaine et leurs valeurs time.Weekday correspondantes. Cependant, une solution plus efficace et plus idiomatique consiste à utiliser une carte.

Utilisation d'une carte pour la conversion :

Une carte permet des recherches plus rapides et directes par rapport à un tableau. Voici un extrait illustrant cette approche :

<code class="go">var daysOfWeek = map[string]time.Weekday{
    "Sunday":    time.Sunday,
    "Monday":    time.Monday,
    // ... and so on for all weekdays
}

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>

Initialisation de la carte en toute sécurité :

Pour garantir une initialisation correcte, vous pouvez utiliser une boucle for pour remplir la carte joursOfWeek :

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

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

Extension de la conversion :

La solution basée sur une carte permet une extension facile. Par exemple, vous pouvez ajouter des noms de jours de semaine courts de 3 lettres comme entrée valide :

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

Conclusion :

L'utilisation d'une carte pour la conversion de chaînes de jours de semaine dans Go est à la fois efficace et flexible. Il permet des recherches faciles, une initialisation sûre et une extension simple pour s'adapter à des formats d'entrée alternatifs.

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