golang运算符&流程控制

运算符
算数运算
func main() {

	var a int = 10
	var b int = 8
	var c = 3.14
	var d = 5.15
	fmt.Println(a + b) // 18
	fmt.Println(a - b) // 2
	fmt.Println(a * b) // 80
	fmt.Println(a / b) //  1,  Go中,如果运算的都是整数,相除后 会默认去掉小数,保留整数部分,
	fmt.Println(c / d) // 0.6097087378640776 ,运算的是浮点数正常计算
	fmt.Println(a % b) // 2

}
自增和自减

在Go中,++和--是单独的语句,不和其他语言一样属于运算符

并且只能单独使用,不能进行赋值操作

var i int = 10

// 错误写法,不能赋值且没有前置符号语法
a = i++
a = i--

// 正确写法,
i++
i--
关系运算符

image-20240219170309547

逻辑运算符

image-20240219170601031

赋值运算符

image-20240219171249492

位运算符

image-20240219172308025

流程控制
if else 语法
func main() {

	/* 语法一 */
	var status1 = true
	var status2 = false
	// 表达式1
	if status1 {
		fmt.Println("分支1")
		// 表达式2
	} else if status2 {
		fmt.Println("分支2")
		// 否则
	} else {
		fmt.Println("分支3")

	}

	/* 语法二  */
	// 和语法一的区别,语法1是区域内的全局变量,而语法二是自己结构内的局部变量
	if age := 34; age > 20 {
		fmt.Println(age)
	}

}
循环
for基本语法
func main() {

	/*
		for 初始语句;条件表达式;结束语句 {
		      循环语句体
		 }

	*/

	// 语法一
	for i := 1; i <= 10; i++ {
		fmt.Println(i)

	}

	// 语法二 初始语句定义在外
	num := 1
	for ; num <= 10; num++ {
		fmt.Println(num)
	}

	// 语法三 初始语句和结束语句都省略
	number := 1
	for number <= 10 {
		fmt.Println(number)
		number++ // 如果不写number++ 则Number一直=1,一直符合条件,则死循环
	}

	// 语法四,语句都省略,无限循环
	n := 1
	for {
		if n <= 10 {
			fmt.Println(n)
			
		} else {
			break // 死循环使用break跳出循环
		}
		n++
	}
}
for range 键值循环

for range可以遍历数组、切片、字符串、map及通道

通过for range遍历的返回值:

  1. 数组、切片、字符串返回索引和值
  2. map返回键值对
  3. 通道只返回通道内的值
func main() {

	/*迭代字符串 */

	var str = "你好golang"
	// key接收索引,v接受值, 要迭代的字符串
	for k, v := range str {
		fmt.Printf("索引是%v--值是%c\n", k, v)
	}

	/* 迭代切片 */
	var arr = []string{"python", "django", "go"}
	for _, v := range arr {
		fmt.Println(v)
	}

}
switch case

使用switch语句可方便的对大量的值进行条件判断,每个switch只能有一个default分支

基本语法:

func main() {
	/* 语法一 */
	file := ".html"
	// 表达式
	switch file {
	// 判断是否相等
	case ".css":
		fmt.Println("css")

	case ".html":
		fmt.Println("html")
		break // 可写可不写
	// 相当于 if里面的 else
	default:
		fmt.Println("err")

	}

	/* 语法二 */
	switch name := "li"; name {
	case "li":
		fmt.Println(name)

	}

	/* 语法三 一个Case可以有多个值,用英文逗号间隔*/
	num := 5
	switch num {

	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")

	case 2, 4, 6, 8, 10:
		fmt.Println("偶数数")

	}

	/* 语法四 分支可以用使用表达式*/
	var age int = 18
	// 分支用表达式的时候,Switch后面不要跟判断的的变量
	switch {
	case age >= 18 && age <= 60:
		fmt.Println("ok")

	}

}

switch穿透:

fallthrough语法可以执行满足条件的case的下一个case

func main() {
	var num = 10
	// 会同时输出 10 和11
	switch {
	case num == 10:
		fmt.Println("10")
		fallthrough // 穿透到下一层case

	case num == 11:
		fmt.Println("11")

	case num == 12:
		fmt.Println("12")
	}

}
break、continue、goto

多重循环中,可以用标号label标出想break、continue的循环

func main() {

// 使用label标记外层循环
label1:
	for j := 1; j <= 10; j++ {

		for n := 1; n <= 10; n++ {

			if n == 5 {
				continue // 跳出本次循环开始下一次循环
			} else if n == 6 {
				continue label1 // 跳出label1的本次循环开始下一次循环
			}

			if n == 7 {
				break // 跳出本次循环
			} else if n == 8 {
				break label1 // 跳出label1的循环
			}
			fmt.Println(n)
		}
	}

}

goto语句通过标签进行代码间的无条件跳转,可以快速跳出循环

func main() {

	// 打印完a之后,goto到 label3 执行d,略过b和c
	fmt.Println("a")
	goto label3
	fmt.Println("b")
	fmt.Println("c")

label3:
	fmt.Println("d")

}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值