Golang - 流程控制
Golang - 流程控制
1. 选择结构
if else语句:
//package 声明开头表示代码所属包
package main
import (
	"io/ioutil"
	"fmt"
)
func main() {
	//常量
	const filename = "abc.txt"
	//读取文件
	contens, err := ioutil.ReadFile(filename)
	// nil空
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n", contens)
	}
	// ;后边直接去判断和处理了
	if contens, err := ioutil.ReadFile(filename); err != nil {
		fmt.Println(err)
	} else {
		fmt.Printf("%s\n", contens)
	}
}
switch语句:
//package 声明开头表示代码所属包
package main
import "fmt"
//函数传入成绩,得到级别 ABC
func grade(score int) string {
	//定义个空串
	g := ""
	//switch语句
	switch {
	case score < 0 || score > 100:
		g = "输入错误"
		//隐式加了一个break,匹配到了就结束
		//关键字fallthrough是继续往下跑
		fallthrough
	case score < 60:
		g = "F"
	case score < 80:
		g = "C"
	case score < 90:
		g = "B"
	case score <= 100:
		g = "A"
	}
	return g
}
func main() {
	fmt.Println(
		grade(0),
		grade(59),
		grade(60),
		grade(82),
		grade(99),
		grade(100),
		grade(-3),
	)
}
//F F C B A A F
2. 循环结构
for 语句:
//package 声明开头表示代码所属包
package main
import (
	"fmt"
	"time"
)
//1.无限死循环
func for1() {
	for {
		fmt.Println("爱天台,爱日耳曼战车")
		//睡1秒
		time.Sleep(1 * time.Second)
	}
}
//2.有限次循环
func for2() {
	for i := 1; i < 11; i++ {
		fmt.Println("爱天台,爱战车", i)
		//睡眠
		time.Sleep(500 * time.Millisecond)
	}
}
//3.if else
func for3() {
	for i := 1; i < 11; i++ {
		if i%5 == 0 {
			fmt.Println("爱阿根廷")
		} else if i%2 == 1 {
			fmt.Println("更爱战车")
		} else {
			fmt.Println("最爱是天台")
		}
		time.Sleep(500 * time.Millisecond)
	}
}
func main() {
	//for2()
	for3()
}
range 语句:
//package 声明开头表示代码所属包
package main
import "fmt"
func main() {
	s := "abc"
	//1.接收了下标,通过下标取值
	for i := range s {
		fmt.Printf("下标=%d,值=%c\n", i, s[i])
	}
	//2.直接接收下标和元素值
	for i, c := range s {
		fmt.Printf("下标2=%d,值2=%c\n", i, c)
	}
	//3.忽略下标
	for _, c := range s {
		fmt.Printf("值=%c\n", c)
	}
}
//下标=0,值=a
//下标=1,值=b
//下标=2,值=c
//下标2=0,值2=a
//下标2=1,值2=b
//下标2=2,值2=c
//值=a
//值=b
//值=c
3. 跳转语句
break和continue
//package 声明开头表示代码所属包
package main
import "fmt"
func main() {
	for i :=0; i<5; i++{
		if 2==i{
			//break
			continue
		}
		fmt.Println(i)
	}
}
//0
//1
//3
//4
goto:可以跳转到指定的位置运行,注意是跳转到当前函数内
//package 声明开头表示代码所属包
package main
import "fmt"
func main() {
	for i :=0; i<5; i++{
		fmt.Println(i)
		//关键字goto
		goto LABEL
	}
	fmt.Println("程序结束")
LABEL:
	fmt.Println("程序over")
}
//0
//程序overGolang - 流程控制的更多相关文章
- Golang的流程控制
		流程控制 条件语句 例: var b bool = true if b{ fmt.Print("b是True") }else{ fmt.Print("b是false&qu ... 
- golang(3):strings和strconv使用 & 时间和日期类型 & 指针类型 & 流程控制 & 函数
		strings和strconv使用 . strings.HasPrefix(s string, prefix string) bool: // 判断字符串s是否以prefix开头 . . string ... 
- golang之流程控制(注意点)
		Go在流程控制方面特点如下: 没有do和while循环,只有一个广义的for语句 switch语句灵活多变,还可以用于类型判断 if语句和switch语句都可以包含一条初始化子语句 break语句和c ... 
- golang基础之三-字符串,时间,流程控制,函数
		strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool:判断字符串s是否以prefix开头 stirngs ... 
- [golang note] 流程控制
		流程控制 • 流程控制语句作用 ▪ 选择:根据条件跳转到不同的执行序列. ▪ 循环:根据条件反复执行某个序列. ▪ 跳转:据条件返回到某执行序列. • 流程控制语句类型 ▪ 条件语句:关键字为if.e ... 
- golang recover panic 流程控制的可达与不可达
		--------------------------流程控制可达----------------------------- package main import "fmt" fu ... 
- golang学习笔记(二):流程控制
		欢迎访问我的博客和github! 今天咱们把烦人的事情丢一丢,继续来学习go的基础知识. 这篇文章记录go语言的流程控制和更多类型. 流程控制 for Go 只有一种循环结构:for 循环. 基本的 ... 
- Golang通脉之流程控制
		流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码. ... 
- Go语言系列(三)- 基础函数和流程控制
		一.strings和strconv的使用 1. strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头 . 2. strin ... 
随机推荐
- ubuntu中eclipse无法识别android手机问题
			1.问题: 在ubuntu中eclipse中用真机来调试androi程序时,发现无法识别手机,例如以下图显示2.37一栏之前显示全是乱码.这是解决后截的图. 2.问题原因: 在window下我们能够通 ... 
- HDOJ 2196 Computer 树的直径
			由树的直径定义可得,树上随意一点到树的直径上的两个端点之中的一个的距离是最长的... 三遍BFS求树的直径并预处理距离....... Computer Time Limit: 1000/1000 MS ... 
- @Validated数据校验
			//lastName必须是邮箱格式 @Email private String lastName; 
- ExtJs 给grid某一单元格重新赋值
			// 司机,搬运工提成 var commissionMoney = (waybillsFtQty * commissionMoneyRatio / personCount).toFixed(2); / ... 
- [CTSC 2008] 祭祀
			[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1143 [算法] 答案为最小路径可重复点覆盖所包含的路径数,将原图G进行弗洛伊德传递闭 ... 
- boost库生成文件命名和编译
			生成文件命名规则:boost中有许多库,有的库需要编译.而有的库不需要编译,只需包含头文件就可以使用.编译生成的文件名字普遍较长,同一个库根据编译链接选项不同,又可以生成多个不同名字的文件.生成的文件 ... 
- (Go)06. Printf格式化输出、Scanf格式化输入详解
			Print.Println .Printf .Sprintf .Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢? Print: 输出到控制台(不接 ... 
- Eclipse  每次ctrl-c ctrl-v 就变慢?
			继续闲着,所以继续写 大小: 60.7 KB 查看图片附件 
- bootstrap-paginator基于bootstrap的分页插件
			bootstrap-paginator基于bootstrap的分页插件 GitHub 官网地址:https://github.com/lyonlai/bootstrap-paginator 步骤 引包 ... 
- android黑科技系列——爆破一款应用的签名验证问题
			一.前言 在之前的文章中说过Android中的安全和破解是相辅相成的,为了防止被破解,很多应用做了一些防护策略,但是防护策略也是分等级,一般简单的策略就是混淆代码和签名校验,而对于签名校验很多应用都是 ... 
