demo 1
    
func getTodaySurplusSecond1() (int64,error) {
    layout := "2006-01-02"
    loc, _ := time.LoadLocation("Asia/Shanghai")
    t, err := time.ParseInLocation(layout, time.Now().Format(layout), loc)

    if err != nil {
        return 0, err
    }
    return int64(86400 - (time.Now().Unix() - t.Unix())), nil
}

Demo2
func getTodaySurplusSecond2() int {
    var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海
    timeTemplate := "2006-01-02 15:04:05"
    timeStr := time.Now().Format("2006-01-02")
    now_time_str := time.Now().In(cstSh).Format(timeTemplate)
    today_end_time_str := timeStr + " 23:59:59"

    formatTime1,_:=time.Parse(timeTemplate,now_time_str)
    formatTime2,_:=time.Parse(timeTemplate,today_end_time_str)

    t1 := formatTime1.Unix()
    t2 := formatTime2.Unix()
       
        return t2-t1
}