打印99乘法表(与c语言,c++一样)
mystr :="%d*%d=%d\t"for i :=1; i <10; i++{for j :=1; j <= i; j++{
tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
fmt.Print(tempstr)//打印格式化好的字符串}
fmt.Println()}
②可以充当while循环的for循环
语法:
for 循环条件{}
打印99乘法表(与while循环没两样)
mystr :="%d*%d=%d\t"
j, i :=1,1for i <10{
j =1for j <= i {
tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
fmt.Print(tempstr)//打印格式化好的字符串
j++}
fmt.Println()
i++}
③对可迭代对象进行循环遍历
语法:
for key,value :=range 可迭代对象{}
该方法在以后最为常用,其中key,value可以使用 _ 空白字符进行忽略,只得到键或值
打印99乘法表
//以下一句是数组直接初始化的方法,在以后还会提到
myarray :=[9]int{1,2,3,4,5,6,7,8,9}for_, v :=range myarray {
l :=1for l <= v {
fmt.Printf("%d*%d=%d\t", l, v, l*v)
l++}
fmt.Println()}
打印1-100的笛卡尔积:
Here:for i :=0; i <100; i++{for j :=0; j <100; j++{
fmt.Println(i,"与", j,"乘积为", i*j)if j ==10{continue Here
}}}-------------------------------------------------------------------------------------
因为有循环条件
一般的continue情况下应该是打印9900个数据
但是对标签进行跳过,就直接跳过了本次外层循环(相当于内置循环内有一个普通的break)
最终打印的数据只有1000个
-------------------------------------------------------------------------------------
③goto
选定一个位置写一个锚点,执行到goto语句时跳转到指定的锚点。
使用goto打印99乘法表
mystr :="%d*%d=%d\t"for i :=1; i <10; i++{
j :=1
Here:if j <= i {
fmt.Print(fmt.Sprintf(mystr, j, i, i*j))
j++goto Here
}else{
fmt.Println()}}