欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Golang如何實現(xiàn)節(jié)假日不打擾用戶

 更新時間:2023年01月31日 16:17:08   作者:壯壯熊  
這篇文章主要為大家介紹了Golang如何實現(xiàn)節(jié)假日不打擾用戶過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1、場景

想象下以下場景,嘿嘿...!

一個iphone用戶,鬧鐘是可以按節(jié)假日不響的! 每日新聞機器人,節(jié)假日是可以不打擾我的! 我的業(yè)務(wù),節(jié)假日是可以...

2、思路

要實現(xiàn)識別節(jié)假日,大概有兩種方式:

1、自己收集國家法定節(jié)假日數(shù)據(jù),離線存儲

優(yōu)勢:離線簡單

劣勢:新一年要去更新,容易忘記,麻煩

2、調(diào)用第三方接口數(shù)據(jù)

優(yōu)勢:不需要我們操心數(shù)據(jù)本身

劣勢:有次數(shù)限制

本次介紹調(diào)用第三方接口的方式,用golang實現(xiàn)整個過程。

3、接口分析

分析了網(wǎng)上現(xiàn)有接口,發(fā)現(xiàn)juhe的api接口會比較合適

當(dāng)然也可以選擇您認為合適的

分析:

請求詳情:

請求地址:http://apis.juhe.cn/fapig/calendar/day
請求參數(shù):date=2023-01-16&detail=&key=c6ff98d3**\*\***be4a35b2
請求方式:GET

Header:
   Content-Type:application/x-www-form-urlencoded

返回內(nèi)容:

{
  "reason":"success",
  "result":{
    "date":"2023-01-16",
    "week":"星期一",
    "statusDesc":"工作日",
    "status":null
  },
  "error_code":0
}

復(fù)制

4、golang實現(xiàn)

4.1、json2go小工具

這里我們利用下json轉(zhuǎn)golang struct的小工具,把接口返回的json轉(zhuǎn)成golang的代碼

http://tools.jb51.net/code/json2gostruct

4.2、代碼實現(xiàn)

package main
import (
  "encoding/json"
  "fmt"
)
func main() {
  // 當(dāng)前日期
  todayStr := time.Unix(time.Now().Unix(), 0).Format("2006-01-02")
  key := "xxxxxxx" //獲取,節(jié)假日信息查詢接口 https://dashboard.juhe.cn/data/index/my
  // 判斷當(dāng)前是否是節(jié)假日(周末也算節(jié)假日,除非是節(jié)假日后補班情況),節(jié)假日跳過
  calendarJh := new(util.CalendarJH)
  isHolidays := calendarJh.IsHolidays(&todayStr, &key)
  if isHolidays {
    fmt.Printf("%v 是節(jié)假日,今天跳過!\n", todayStr)
    return
  }
}
// IsHolidays 是否是節(jié)假日(周末也算節(jié)假日,除非是節(jié)假日后補班情況)
func (calendarJH *CalendarJH) IsHolidays(date *string, key *string) bool {
  // 默認返回是節(jié)假日
  result := true
  // 調(diào)用juhe api 接口
  juheAPI := "https://apis.juhe.cn/fapig/calendar/day?date=" + *date + "&detail=1&key=" + *key
  body, _ := HttpGetInfo(&juheAPI)
  err := json.Unmarshal(*body, calendarJH)
  if err != nil {
    fmt.Printf("調(diào)用juhe接口出錯,默認返回是節(jié)假日,錯誤原因:%v \n", err)
    return result
  }
  if calendarJH.Result.Status == "1" {
    result = true
    return result
  } else if calendarJH.Result.Status == "2" {
    result = false
    return result
  } else if calendarJH.Result.Status == nil {
    if calendarJH.Result.StatusDesc == "周末" {
      result = true
      return result
    } else if calendarJH.Result.StatusDesc == "工作日" {
      result = false
      return result
    }
  }
  return result
}
// CalendarJH 日歷數(shù)據(jù),來自juhe
type CalendarJH struct {
  Reason    string `json:"reason"`
  Result    Result `json:"result"`
  ErrorCode int    `json:"error_code"`
}
type Result struct {
  Date       string      `json:"date"`
  Week       string      `json:"week"`
  StatusDesc string      `json:"statusDesc"` //狀態(tài)描述,節(jié)假日/工作日/周末。1.當(dāng)status為1時,表示節(jié)假日;2.當(dāng)status為2時,表示工作日;3.當(dāng)status為null時,如果week為周六或者周日,表示周末,否則表示工作日
  Status     interface{} `json:"status"`     //當(dāng)天狀態(tài)標(biāo)識,1:節(jié)假日,2:工作日,null:周末或工作日(可根據(jù)week進行判斷,也可以直接根據(jù)statusDesc進行判斷)
}

以上就是詳解Golang如何實現(xiàn)節(jié)假日不打擾用戶的詳細內(nèi)容,更多關(guān)于Golang節(jié)假日不打擾用戶的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go并發(fā)編程實現(xiàn)數(shù)據(jù)競爭

    Go并發(fā)編程實現(xiàn)數(shù)據(jù)競爭

    本文主要介紹了Go并發(fā)編程實現(xiàn)數(shù)據(jù)競爭,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Go Map并發(fā)沖突預(yù)防與解決

    Go Map并發(fā)沖突預(yù)防與解決

    這篇文章主要為大家介紹了Go Map并發(fā)沖突預(yù)防與解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 圖解Golang的GC垃圾回收算法

    圖解Golang的GC垃圾回收算法

    這篇文章主要介紹了圖解Golang的GC垃圾回收算法,詳細的介紹了三種經(jīng)典的算法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • golang中net的tcp服務(wù)使用

    golang中net的tcp服務(wù)使用

    這篇文章主要介紹了golang中net的tcp服務(wù)使用,文章通過服務(wù)端監(jiān)聽端口 展開主題的詳細內(nèi)容,具有一定的參考價值,需要的 小伙伴可以參考一下
    2022-04-04
  • GO語言中的Map使用方法詳解

    GO語言中的Map使用方法詳解

    這篇文章主要給大家介紹了關(guān)于GO語言中Map使用方法的相關(guān)資料,在go語言中map是散列表的引用,map的類型是map[k]v,也就是常說的k-v鍵值對,需要的朋友可以參考下
    2023-08-08
  • 解決golang gin框架跨域及注解的問題

    解決golang gin框架跨域及注解的問題

    這篇文章主要介紹了解決golang gin框架跨域及注解的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 詳解golang函數(shù)多返回值錯誤處理與error類型

    詳解golang函數(shù)多返回值錯誤處理與error類型

    這篇文章主要為大家詳細介紹了golang中函數(shù)多返回值錯誤處理與error類型的相關(guān)知識,文中的示例代碼簡潔易懂,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)吧
    2023-10-10
  • go?zero微服務(wù)實戰(zhàn)性能優(yōu)化極致秒殺

    go?zero微服務(wù)實戰(zhàn)性能優(yōu)化極致秒殺

    這篇文章主要為大家介紹了go-zero微服務(wù)實戰(zhàn)性能優(yōu)化極致秒殺功能實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Go語言使用templ實現(xiàn)編寫HTML用戶界面

    Go語言使用templ實現(xiàn)編寫HTML用戶界面

    templ是一個在 Go 中編寫 HTML 用戶界面的語言,使用 templ,我們可以創(chuàng)建可呈現(xiàn) HTML 片段的組件,下面就跟隨小編一起了解一下具體的實現(xiàn)方法吧
    2023-12-12
  • 如何在Go中使用Casbin進行訪問控制

    如何在Go中使用Casbin進行訪問控制

    這篇文章主要介紹了如何在Go中使用Casbin進行訪問控制,Casbin是一個強大的、高效的開源訪問控制框架,其權(quán)限管理機制支持多種訪問控制模型,Casbin只負責(zé)訪問控制
    2022-08-08

最新評論