Go学习笔记(五)
多重循环控制
1、将一个循环放到另一个循环内,就形成了嵌套循环,在外边的FOR成为外层循环,在里面的for循环成为内层循环(不建议超过3层循环)
2、实际上,嵌套循环就是把内层循环当初外层循环的循环体,只有内层的循环条件为false时,才会完全跳出内层循环,才可以结束外层的当次循环,开始下一次的循环
3、设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次
编程思路:
1、先易后难,将一个复杂的问题拆解成一个简单的问题
2、先死后活,先写死,然后用变量做活
打印半边金字塔
for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { fmt.Print("*") } fmt.Println() }
这里print和println的区别
print是不会有空行且换行的
println则会有空格和换行
打印金字塔
var totallevel int = 9 for i := 1; i <= totallevel; i++ { for k := 1; k <= totallevel - i; k++ { fmt.Print(" ") } for j := 1; j <= 2 * i - 1; j++ { fmt.Print("*") } fmt.Println() }
打印空心金字塔
var totallevel int = 9 for i := 1; i <= totallevel; i++ { for k := 1; k <= totallevel - i; k++ { fmt.Print(" ") } for j := 1; j <= 2 * i - 1; j++ { if j == 1 || j == 2 * i - 1 || i == totallevel { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println() }
打印空心菱形
package main import "fmt" func main() { ///打印空心菱形 ///先打印菱形的上半部分 /// 上半部分是每层 * 的个数 = 2 * 当前层 - 1 /// 空格 = 总层数 - 当前层 /// totallevel - 1 每层 * 的个数 = totallevel * 3 - (2 * i + totalleverl) - 1 var totallevel int = 9 for i := 1; i <= totallevel; i++ { for k := 1; k <= totallevel - i; k++ { fmt.Print(" ") } for j := 1; j <= 2 * i - 1; j++ { if j == 1 || j == 2 * i - 1 { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println() } for i := 1; i <= totallevel - 1; i++{ for k := 1; k <= i; k++ { fmt.Print(" ") } for j := 1; j <= 3 * totallevel - (2 * i + totallevel) - 1; j++ { if j == 1 || j == 3 * totallevel - (2 * i + totallevel) - 1 { fmt.Print("*") } else { fmt.Print(" ") } } fmt.Println() } }