go 学习笔记4_go基础之流程控制

本文深入探讨了Go语言中的控制流结构,包括if-else分支、for循环、switch语句和goto标签的使用方法,对比了Go与Python的语法差异,并提供了丰富的代码示例。

if 分支

if else 分支结构

if格式
if 表达式1 {
    分支1
} else if 表达式2 {
    分支2
} else{
    分支3
}
  • 和python 不同的是 if后面要加上大括号来写分支程序 python是靠缩进,
  • python和go 的 elif 和else if 关键字是有区别的 else if 个人觉得没有elif舒服
  • 不过go编辑的时候会自动缩进,看着和python一样舒服
else if 和 else 要卸载 大括号后面 如果另起一行 会报错的

错误示范


if a > 15 {
	fmt.Println("\u4f18\u79c0")
} 
else if a < 10 {
	fmt.Println("\u4f18\u79c0")
} 
else {
	fmt.Println("\u4f18\u79c0")
}

//这样 写会报错  syntax error: unexpected else, expecting 

特殊写法

  • 可以if里面定义变量 这样作用域就在if里面
  • 还可以这样,python好像不可以这么定义
func main() {
	if age := 20; age < 19 {
		fmt.Println("未成年")
	} else {
		fmt.Println("已成年")
	}
}

## 结果是 已成年

循环流程

  • go 里面只有for循环 ,没有其他循环
  • 标准写法
for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
// 打印0-9
  • 变种1 初始赋值可以省略,前提是前面已经复制了
var i = 5
for ; i < 10; i++ {
	fmt.Println(i)
}
//结果打印0-9
  • 结束语句也可以省略
var i = 5
for i < 10  {
	fmt.Println(i)
	i++
}
//结果打印0-9
  • 无限循环
    用 break goto return panic 推出循环
for  {
	fmt.Println("hello")	
}
//无数hello
  • 遍历用法 键值循环
    便利类型:数组、切片、字符串、map及通道

    1. 数组、切片、字符串 返回 索引和值
    2. map 返回键值对
    3. 通道只返回通道内容

    和python的 for i in range(10)效果差不都

s := "Hello沙河"
	for i, v := range s {
		fmt.Printf("%d %c\t", i, v)
	}
// 0 H     1 e     2 l     3 l     4 o     5 沙    8 河
  • 推出for循环
    用法和python一样
for i := 0; i < 10; i++ {
	if i == 5 {
		continue//跳过当前判断 继续执行循环
		break// 跳出for循环			
	}
	fmt.Println(i)	
}

switch

简化if语句 一个变量和具体的值作比较

  • 不推荐使用了 ,自动补全都没有goto关键字了
  • 没有default 不会报错 运行时如果没有对应值 无反应
switch n := 3; n {
	case 1:
		fmt.Println("大拇指")
	case 2:
		fmt.Println("食指")
	case 3:
		fmt.Println("中指")
	case 4:
		fmt.Println("无名指")
	case 5:
		fmt.Println("小拇指")
	default:
		fmt.Println("无效的数字")
	}
  • 也可以使用判断条件 switch 判断写在case里面
n := 10
switch {
case n > 10:
	fmt.Println("大于10")
case n > 100:
	fmt.Println("大于100")
default:
	fmt.Println(n)
}
// 结果 10

goto

跳转到指定标签位置 ,跳出多重循环使用,但是goto使用多了 影响阅读,
一般还是使用break跳出吧。

func main() {

	for i := 1; i < 10; i++ {
		for j := 1; j < 10; j++ {
			if j == 2 {
				fmt.Printf("%d,%d\n", i, j)
				goto tiaochu
			}
		}
	}
tiaochu:
	fmt.Println("over")
}
//结果
//1,2
//over
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值