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
//程序over
Golang - 流程控制的更多相关文章
- 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 ...
随机推荐
- 升级DM5校验
1,将某个文件生成带DM5的文件,使用srec_cat工具: read A #原始文件 srec_cat $A -o 要生成的文件名称 -Line_Length 46 -Address_Leng ...
- 一句话实现Mysql查询结果带行号
SELECT @rowno:=@rowno + 1 AS rowno,a.* FROM tableName a,(SELECT @rowno:=0) b
- jQuery - 点击图片加边框
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 最经典的SDK程序结构 HelloWin
程序运行效果:在创建窗口的时候,播放一个声音.且在窗口的客户区中央画一句文字:Hello, Windows 98!,无论程序怎么移动.最大化,文字始终在程序的中央部位. 程序总共分为六个步骤:定义,注 ...
- U32670 小凯的数字 数学
这是洛谷一个比赛中的一道题,和去年NOIP D1T1挺像.我看了一眼之后想“这不是小学奥数吗?求一个数字和就好了呀”...然后,60,剩下T了,gg. 只好看正解,但是一脸懵逼???然后看了证明,c* ...
- bzoj 1045 [HAOI2008] 糖果传递 —— 贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1045 好像是贪心...但这是一个环... 看博客:http://hzwer.com/2656 ...
- python 46 盒模型 与盒模型布局
一:盒模型 1. 盒模型的概念 广义盒模型:文档中所有功能性及内容性标签,及文档中显示性标签 侠义盒模型:文档中以块级形式存在的标签(块级标签拥有盒模型100%特性且最常用) 盒模型组成:margi ...
- 解决VS2008 开发Wince应用程序项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- Elasticsearch 7.1.1 集群 + 配置身份验证
一.安装Elasticsearch 1.1 环境说明 Centos7.6 Elasticsearch7.1.1 #挂载数据盘 fdisk /dev/vdb n,p,,回车,回车,wq fdisk -l ...
- go并发编程 WaitGroup, Mutex
1.背景 记录一下,方便后续写代码直接使用. 需要注意几点: chan 默认支持多协程工作,不需要加锁. 其他变量操作需要使用锁保护(map多协程并发写会panic, 并且无法捕获). 启动gorou ...