Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Menukar Rentetan Hari Minggu kepada masa. Hari Minggu dalam Pergi Dengan Cekap?

Bagaimanakah Saya Menukar Rentetan Hari Minggu kepada masa. Hari Minggu dalam Pergi Dengan Cekap?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 13:10:34253semak imbas

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

Menghuraikan Rentetan Hari Minggu ke dalam masa.Hari Minggu: Pendekatan Idiomatik dengan Peta

Menukar rentetan hari minggu menjadi masa yang sepadan.Nilai hari minggu dalam Go memerlukan penyelesaian tersuai kerana tiada fungsi terbina dalam untuk penukaran ini. Walaupun fungsi berasaskan tatasusunan yang dibentangkan menyediakan penyelesaian yang boleh dilaksanakan, pendekatan berasaskan peta menawarkan kelebihan dalam kecekapan dan fleksibiliti.

Penyelesaian Dipertingkatkan Menggunakan Peta

Daripada menggunakan tatasusunan, menggunakan peta dengan rentetan hari minggu sebagai kunci dan masa yang sepadan. Nilai hari minggu sebagai nilai mempercepatkan carian dan memudahkan kod dengan ketara:

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

Faedah Pendekatan Berasaskan Peta

  • Pencarian yang lebih pantas: Peta menyediakan masa carian O(1), menjadikannya lebih cekap daripada mengulangi tatasusunan.
  • Permulaan terus: Memulakan peta adalah lebih mudah, terutamanya apabila dilakukan dengan gelung for, seperti yang ditunjukkan dalam contoh ini:
<code class="go">var daysOfWeek = map[string]time.Weekday{}

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

Meluaskan Peta untuk Input Tambahan

Pendekatan berasaskan peta ini juga membolehkan penambahan fleksibel nilai sah baharu yang boleh dihuraikan mengikut masa.Hari minggu. Contohnya, nama pendek 3 huruf hari kerja boleh disertakan dengan gelung ringkas:

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

Sambungan ini membenarkan menghuraikan kedua-dua nama penuh hari bekerja (mis., "Isnin") dan nama hari minggu pendek (mis., "Isnin ") ke masa.Hari Minggu.

Menggunakan peta dalam konteks ini menyediakan cara yang lebih pantas, lebih mudah dan boleh dilanjutkan untuk menghuraikan rentetan hari minggu ke masa. Nilai hari minggu dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Menukar Rentetan Hari Minggu kepada masa. Hari Minggu dalam Pergi Dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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