第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將工作日字符串解析為 time.Weekday

將工作日字符串解析為 time.Weekday

Go
婷婷同學(xué)_ 2023-04-10 10:30:06
我遇到了將星期幾字符串轉(zhuǎn)換為time.Weekday值的問題。我找不到time包中內(nèi)置的任何東西。然后我寫了這個(gè)簡單的函數(shù)(滿足我的需要):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)}在 Golang 中是否有任何其他推薦或更慣用的方法來執(zhí)行此轉(zhuǎn)換?謝謝!
查看完整描述

2 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

是的,使用映射而不是數(shù)組,因此查找更快更直接:


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)

}

測試它:


fmt.Println(parseWeekday("Monday"))

fmt.Println(parseWeekday("Friday"))

fmt.Println(parseWeekday("invalid"))

輸出(在Go Playgorund上試試):


Monday <nil>

Friday <nil>

Sunday invalid weekday 'invalid'

提示:


您甚至可以使用for循環(huán)來安全地初始化daysOfWeek地圖,如下所示:


var daysOfWeek = map[string]time.Weekday{}


func init() {

? ? for d := time.Sunday; d <= time.Saturday; d++ {

? ? ? ? daysOfWeek[d.String()] = d

? ? }

}

測試和輸出是一樣的。在Go Playground試試這個(gè)。


這個(gè)地圖解決方案的另一個(gè)不錯(cuò)的屬性(與您的數(shù)組解決方案相比)是您可以在同一個(gè)地圖中列出其他有效值,這些值可以在time.Weekday沒有額外解析代碼的情況下被解析成。


例如,讓我們也將 3 個(gè)字母的短工作日名稱解析為它們的time.Weekday等價(jià)物,例如"Mon"to time.Monday。


這個(gè)擴(kuò)展可以用一個(gè)簡單的循環(huán)來添加:


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

? ? }

}

測試它:


fmt.Println(parseWeekday("Monday"))

fmt.Println(parseWeekday("Friday"))

fmt.Println(parseWeekday("Mon"))

fmt.Println(parseWeekday("Fri"))

fmt.Println(parseWeekday("invalid"))

輸出(在Go Playground上嘗試):


Monday <nil>

Friday <nil>

Monday <nil>

Friday <nil>

Sunday invalid weekday 'invalid'


查看完整回答
反對(duì) 回復(fù) 2023-04-10
?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

這看起來是這樣做的:


package main

import "time"


func parseWeekday(v string) (time.Weekday, error) {

   t, e := time.Parse("Monday 2", v + " 2")

   if e != nil { return 0, e }

   return t.Weekday(), nil

}


func main() {

   n, e := parseWeekday("Sunday")

   if e != nil {

      panic(e)

   }

   println(n == time.Sunday)

}

https://golang.org/pkg/time#Parse


查看完整回答
反對(duì) 回復(fù) 2023-04-10
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)