// 注释双斜杠
/* 或者杠上花 */
package main // 主函数的package必须为main

// 引入的是文件路径。调用文件路径下包名即可使用(包名可以重复)
import (
    "fmt"
)

func main() {
    // 打印菱形
    // var size int = 5
    // fmt.Println("请输入菱形的大小: ")
    // fmt.Scanf("%d", &size)
    // diamond(size)

    // 乘法口诀表
    multTable()
}

/* 星号打印菱形方法 */
func diamond(size int) {
    // 如果是偶数则将大小+1
    if size%2 == 0 {
        size++
    }
    fmt.Printf("打印输出菱形行数为: %v\n", size)
    // 初始化空格 和 *标记初始打印数量 以及 打印数量反转标记(省去一个for循环的编写)
    var span, symbol, flag int = size/2 + 1, 1, -1
    for i := 0; i < size; i++ {
        if flag < 0 && i >= size/2 {
            flag = -flag
        }
        // 打印span
        for j := 0; j < span; j++ {
            fmt.Printf(" ")
        }
        span = span + flag
        for k := 0; k < symbol; k++ {
            fmt.Printf("*")
        }
        fmt.Printf("\n")

        symbol = symbol - flag*2
    }
}

/* 打印乘法口诀表 */
func multTable() {
    for j := 1; j <= 9; j++ {
        for i := 1; i <= j; i++ {
            if (i == 3 && j == 3) || (i == 3 && j == 4) {
                fmt.Printf(" ")
            }
            fmt.Printf("%v*%v=%v ", i, j, i*j)
        }
        fmt.Printf("\n")
    }
}