Bagaimana untuk Menukar Perwakilan Rentetan Hari dalam Minggu kepada Nilai `masa.Hari Minggu`?

Patricia Arquette
Lepaskan: 2024-10-30 17:55:03
asal
354 orang telah melayarinya

How to Convert a String Representation of a Day of Week into a `time.Weekday` Value?

Menghuraikan Perwakilan Rentetan Hari dalam Minggu mengikut masa.Nilai Hari Minggu

Masalah:

Menukar rentetan yang mewakili hari minggu ke dalam masa yang setara.Nilai hari minggu memberikan cabaran. Pakej masa tidak termasuk sebarang fungsi terbina dalam untuk penukaran ini.

Penyelesaian Awal:

Pendekatan awal ialah menggunakan tatasusunan untuk menyimpan pemetaan antara hari rentetan minggu dan masa yang sepadan dengannya.Nilai hari minggu. Contohnya:

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

func parseWeekday(v string) (time.Weekday, error) {
    for i := range daysOfWeek {
        if daysOfWeek[i] == v {
            return time.Weekday(i), nil
        }
    }

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

Pengoptimuman Disyorkan:

Untuk meningkatkan kecekapan dan kejelasan penukaran ini, peta disyorkan dan bukannya tatasusunan. Peta membolehkan carian lebih pantas, menghasilkan prestasi yang lebih baik.

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

Petua:

Untuk penyelesaian yang mantap, gelung for boleh digunakan untuk memulakan daysOfWeek dengan selamat peta.

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

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

Fleksibiliti Penghuraian Tambahan:

Penyelesaian berasaskan peta menawarkan kelebihan berbanding pendekatan berasaskan tatasusunan. Dengan menambahkan pasangan nilai kunci tambahan pada peta, nilai sah tambahan boleh dihuraikan tanpa mengubah suai logik penghuraian.

Sebagai contoh, untuk menghuraikan kedua-dua nama pendek penuh dan 3 huruf hari bekerja, peta boleh dilanjutkan seperti berikut:

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

Penyelesaian lanjutan ini membolehkan menghuraikan rentetan seperti "Isnin" atau "Jumaat" ke dalam masa yang sepadan.Nilai hari minggu.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Perwakilan Rentetan Hari dalam Minggu kepada Nilai `masa.Hari Minggu`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!