Go

// 打印金字塔 打印空心金字塔
    var totallevel int = 4
    
    for i := 1; i <= totallevel; i ++ {
        // 每行空格规律 总层数 - 当前层数
        for k := 1; k <= totallevel - i; k++ {
            fmt.Printf(" ")
        }
        for j := 1; j <= 2 * i - 1 ; j ++ {
            // 空心的条件 最后一行全打印 i == totallevel
            if j == 1 || j == (2 * i - 1) || i == totallevel {
                fmt.Printf("*")
            }else{
                fmt.Printf(" ")
            }
        }
        fmt.Println()
    }
 
// 打印出空心菱形 可以分解为两个三角形
    for i := 1; i <= totallevel; i ++ {
        // 每行空格规律 总层数 - 当前层数
        for k := 1; k <= totallevel - i; k++ {
            fmt.Printf(" ")
        }
        for j := 1; j <= 2 * i - 1 ; j ++ {
            if j == 1 || j == 2 * i - 1 {
                fmt.Printf("*")
            }else{
                fmt.Printf(" ")
            }
        }
        fmt.Println()
    }
    for i := totallevel; i >= 1; i -- {
        // 每行空格规律 总层数 - 当前层数
        for k := 1; k <= totallevel - i; k++ {
            fmt.Printf(" ")
        }
        for j := 1; j <= 2 * i - 1 ; j ++ {
            if j == 1 || j == 2 * i - 1 {
                fmt.Printf("*")
            }else{
                fmt.Printf(" ")
            }
        }
        fmt.Println()
    }
 
初学勿喷, 有更好的方法望提出!
原文地址:https://www.cnblogs.com/guo-s/p/13926100.html