GO语言初识——day2

if分支


if  布尔表达式1 {
    /* 在布尔表达式1为true时执行 */
} else if 布尔表达式2 {
    /* 在布尔表达式1为false且布尔表达式2为true时执行 */
} else {
    /* 在上面两个布尔表达式都为false时执行 */
}

特殊的if语句

if 初始化语句;条件{
     /* 执行代码 */
}

if num:=10;num%2==0{
    fmt.println(num,"is even")
} else {
    fmt.println(num,"is odd")
}

fmt.println(num)//编译器会报错,因为num变量已经出了if语句

注:若采用上述的特殊if语句,则该初始化的变量只能在if语句内使用,出了if语句使用回报错


switch分支语句

switch 变量名{
case 数值1:分支1
case 数值2:分支2
....
default:最后一个分支
}
num:=3
switch num{
case 1:fmt.println("第一季度")
case 2:fmt.println("第二季度")
case 3:fmt.println("第三季度")
case 4:fmt.println("第四季度")
default :fmt.println("输入有误")
}

//若num改为5,则跳到default语句

注:

1.switch可以作用在其他类型上,case后的数值必须和switch作用的变量类型一致

2.case是无序的

3.case后的数值是唯一的

4.default语句可有可没有

其他写法

1.省略switch后的变量,相当于直接作用在true上,匹配true类型的case语句

switch{
case true :fmt.println("true")
case false :fmt.println("false")
}

//结果输出true

2.case后可以跟随多个数值

switch 变量{
    case 数值1,数值2,数值3... :
    代码块
    
}
//case后的数值只需满足一个即可执行该语句

3.switch后也可以加初始化语句,初始化的变量只能作用于switch结构内

与if语句初始化语法类似


break:可以使用在switch语句,也可以使用在for循环中,用来强制结束case语句,进而结束switch分支

fallthrough:执行完一个case后紧跟着执行下一个case,用于穿透switch,应该位于某个case语句的最后一行

m:=2
switch m{
    case 1:
    	fmt.println("第一季度")
	case 2:
    	fmt.println("第二季度")
         fallthrough
	case 3:
    	fmt.println("第三季度")
	case 4:
    	fmt.println("第四季度")	
}
//结果会将第二季度和第三季度都打印出来

for循环

GO语言只有for循环

语法结构:

for init; condition; post { }

for 表达式1;表达式2(布尔类型);表达式3{

​ 循环体

}

其他写法

省略表达式1和表达式3,只有一个条件判定

for condition { } //效果与while相似

同时省略三个表达式,相当于直接作用在true上,相当于while{true}

for { }

for循环中range格式可以对slice、map、数组、字符串等进行迭代循环

for key,value := range oldmap {

​ newmap[key] = value

}

练习

打印九九乘法表

package main

import "fmt"

func main() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d ", i, j, i*j)
		}
		fmt.Println()
	}
}

break 和 continue

break:跳出循环

continue:结束本次循环,执行下一次循环

多层循环嵌套时,break和continue默认结束离他最近的循环体,要想结束指定的某个循环,则需要给循环贴上标签,然后break和continue后面加上该标签即可

for 表达式1;表达式2;表达式3{

​ for 表达式1;表达式2;表达式3{

​ break;//结束的是内层循环

​ continue;//结束的是内层循环

​ }

}

flag: for 表达式1;表达式2;表达式3{

​ for 表达式1;表达式2;表达式3{

​ break flag;//结束的是外层循环

​ continue flag;//结束的是外层循环

​ }

}

练习

打印2——100内的所有素数

package main

import (
	"fmt"
	"math"
)

// 素数:只能被1和 本身整除
func main() {
	for i := 2; i <= 100; i++ {
		flag := true //判断i是否是素数
		for j := 2; j <= int(math.Sqrt(float64(i))); j++ {
			if i%j == 0 {
				flag = false
				break
			}
		}
		if flag {
			fmt.Println(i)
		}
	}

}

goto语句:可以无条件的跳转到指定行

goto label :

label: statement;

err := firstcheckerror()
if err != nil{
    goto onexit
}
err = secondchenkerror()
if err != nil{
    goto onexit
}
fmt.println("done")
return 
onexit:
	fmt.println(err)
	exitprocess()

生成随机数

伪随机数,根据一定的算法公式得出来的

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	/*step1:要想每次生成的随机数都不同的话,就要改变它的种子数
	  可以设置成时间戳, 因为时间是一直在变化的
	*/
	
	rand.Seed(time.Now().UnixNano()) //改变种子数
	for i := 0; i < 10; i++ {
		//step2:调用生成随机数的函数
		fmt.Println(rand.Intn(100)) //Intn函数()里的参数n是默认生成[0,n)范围内的数
	}
	/*若是想要生成指定范围内的一个数则需要用到Intn()函数
	[15,76]
	     [0,61]+15
	[3,48]
	     [0,45]+3
	*/
	num := rand.Intn(46) + 3 //[3,48]
	fmt.Println(num)
	num1 := rand.Intn(62) + 15 //[15,76]
	fmt.Println(num1)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒颀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值