不按系统流程看了,直接想什么弄什么,先弄了再系统学习。
面向百度学习
第一次尝试

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    //golang和php中格式化
    //语言         年        月      日    时    分    秒    分隔符
    //PHP         Y         m    d        H    i    s    自定义
    //Golang    2006    01      02    15    04    05    自定义
    //例如  获取当前格式化年月日时分秒
    t := time.Now()
    //times := t.Format("2006-01-02 15:04:05") //格式化格式是 Go语言的诞生时间
    times := t.Format("2006-01-02") //格式化格式是 Go语言的诞生时间
    fmt.Println("当前时间:", times)
    //指定某年某月 或 者获取当月第一天是星期几
    year := t.Year()
    month := t.Format("01")
    monthInt, err := strconv.Atoi(month) //string 转 int
    if err != nil {
        fmt.Println(err)
    }
    isWeek := ZellerFunction2Week(year, monthInt, 1)
    //打印列头
    var head string
    // _ golang中的下划线表示忽略变量的意思,也没有产生新的变量,但是后面的表达式依然会被执行。
    for k, _ := range weekday {
        head += "  " + weekday[k]
    }
    //判断1号开始
    headnum := weekdaynum[isWeek]
    //判断这个月有多少天
    dayNum := getYearMonthToDayNum(year, monthInt)
    var body string
    for i := 0; i < headnum; i++ {
        body += "      "
    }
    body += "  1"
    for i := 2; i <= dayNum; i++ {
        //int转成string
        stringnum := strconv.Itoa(i)
        body += "    " + stringnum
        //判断周六
    if (headnum+i)%7 == 0 {
        body += "\n"
    }
    }
    fmt.Println(head)
    fmt.Println(body)
}

var weekday = [7]string{"周日", "周一", "周二", "周三", "周四", "周五", "周六"}
var weekdaynum = map[string]int{"周日": 0, "周一": 1, "周二": 2, "周三": 3, "周四": 4, "周五": 5, "周六": 6}

// 获取指定时间是周几
func ZellerFunction2Week(year, month, day int) string {
    var y, m, c int
    if month >= 3 {
        m = month
        y = year % 100
        c = year / 100
    } else {
        m = month + 12
        y = (year - 1) % 100
        c = (year - 1) / 100
    }
    week := y + (y / 4) + (c / 4) - 2*c + ((26 * (m + 1)) / 10) + day - 1
    if week < 0 {
        week = 7 - (-week)%7
    } else {
        week = week % 7
    }
    whinch_week := week
    return weekday[whinch_week]
}

// 查询某年某月是多少天
func getYearMonthToDayNum(year, month int) int {
    //有31天的月份
    day31 := map[int]bool{
        1:  true,
        3:  true,
        5:  true,
        7:  true,
        8:  true,
        10: true,
        12: true,
    }
    if day31[month] == true {
        return 31
    }
    // 有30天的月份
    day30 := map[int]bool{
        4:  true,
        6:  true,
        9:  true,
        11: true,
    }
    if day30[month] == true {
        return 30
    }
    //计算平年还是闰年
    if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
        // 得出二月天数
        return 29
    }
    // 得出平年二月天数
    return 28
}

运行结果
搜狗截图23年02月21日1731_1.png

收获:
0.格式化是2006-01-02 15:04:05
1.monthInt, err := strconv.Atoi(month) //string 转 int
2.stringnum := strconv.Itoa(i) //int转成string
3.数组遍历
for k, _ := range weekday {
head += " " + weekday[k]
}
4.var weekday = [7]string{"周日", "周一", "周二", "周三", "周四", "周五", "周六"} //数组声明
5.var weekdaynum = map[string]int{"周日": 0, "周一": 1, "周二": 2, "周三": 3, "周四": 4, "周五": 5, "周六": 6} //字典声明