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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從字符串中獲取整數(shù)月份值

從字符串中獲取整數(shù)月份值

Go
慕尼黑8549860 2022-05-05 15:52:13
我正在從 AWS 解析一個看起來像這樣的 cron 字符串cron(0 7 13 November ? 2019)。有沒有一種干凈的方法可以從November返回到11使用 Go 的內(nèi)置類型?該time.Month類型允許映射int到string,但似乎沒有辦法做相反的事情。我錯過了什么嗎?現(xiàn)在,我寫這個是為了得到一個map[string]int我正在使用的:monthi := getMonths()[monthName].func getMonths() map[string]int {    m := make(map[string]int)    for i := 1; i < 13; i++ {        month := time.Month(i).String()        m[month] = i    }    return m}
查看完整描述

1 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊

前言:我在 中發(fā)布了這個實用程序github.com/icza/gox,請參閱timex.ParseMonth()。


這是目前最好的方法。


最好的辦法是使用包級變量并只填充一次地圖。


以這種方式處理人口更清潔、更安全:


var months = map[string]time.Month{}


func init() {

    for i := time.January; i <= time.December; i++ {

        months[i.String()] = i

    }

}

測試它:


for _, s := range []string{"January", "December", "invalid"} {

    m := months[s]

    fmt.Println(int(m), m)

}

輸出(在Go Playground上試試):


1 January

12 December

0 %!Month(0)

請注意,此地圖具有靈活性,您可以添加短月份名稱,映射到同一月份。例如,您也可以添加months["Jan"] = time.January,所以如果您的輸入是"Jan",您也可以得到time.January。這可以通過在同一個循環(huán)中分割長名稱來輕松完成,例如:


for i := time.January; i <= time.December; i++ {

    name := i.String()

    months[name] = i

    months[name[:3]] = i

}

另請注意,可以使用time.Parse()在布局字符串所在的位置進(jìn)行解析"January":


for _, s := range []string{"January", "December", "invalid"} {

    t, err := time.Parse("January", s)

    m := t.Month()

    fmt.Println(int(m), m, err)

}

哪些輸出(在Go Playground上嘗試):


1 January <nil>

12 December <nil>

1 January parsing time "invalid" as "January": cannot parse "invalid" as "January"

但是簡單的地圖查找在性能上要優(yōu)于這個。


查看完整回答
反對 回復(fù) 2022-05-05
  • 1 回答
  • 0 關(guān)注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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