go语言学习(3)--分支和循环
if
先看一个最常见的 if
else
分支
func readFile() {
const filename = "./lesson2(branch)/abc.txt"
contents, err := ioutil.ReadFile(filename)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
}
【go语言学习(3)--分支和循环】发现什么了吗,
go
里的if
后面不用加括号,直接写语句就行,等下学的 for
循环也是不用加括号,因为go
是个崇尚简洁的语言,下面再来看这个例子还能这么写func readFile() {
const filename = "./lesson2(branch)/abc.txt"
if contents, err := ioutil.ReadFile(filename);
err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
}
可以把读操作和判断 error 写在同一行,
if
else
没啥讲的,其他语言你会用,这也一样switch
直接看代码
func grade(score int) string {
g := ""
switch {
case score < 0 || score > 100:
panic(fmt.Sprintf("Wrong score: %d", score))
case score < 60:
g = "F"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 1000:
g = "A"
default:
panic(fmt.Sprintf("Wrong score: %s", score))
}
return g
}
与 java 些许不同的是,这些 case 里面不用写 break, 编译器会自动帮你退出,很贴心有木有,
panic
是个关键字,抛出异常,相当于new throw
.分支就讲到这,下面讲循环for
直接看代码
/**
传统循环
*/
func sum(n int) int {
sum := 0
for i := 0;
i <= n;
i++ {
sum += i
}
return sum
}
go
的 for
不光省略了括号,还可以省略初始条件,终止条件/**
省略初始条件
*/
func convertToBin(n int) string {
result := ""
for ;
n > 0;
n /= 2 {
lsb := n % 2
result = strconv.Itoa(lsb) + result
}
return result
}/**
只有终止条件的循环
*/
func printFile(filename string) {
file, err := os.Open(filename)
if err != nil {
panic(err)
}
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}/**
死循环
*/
func forever() {
for {
fmt.Println("我是死循环")
time.Sleep(1 * time.Second)
}
}
go
里死循环就是 for
后面什么都不加,就是 while(true)
的意思总结
-
for
,if
后面的条件没有括号 -
if
条件里也可以定义变量 - 没有
while
-
switch
不需要break
,也可以直接switch
多个条件,条件写case
里
上述代码均已上传至 github, 欢迎 star
https://github.com/yejunyu/golearn
文章图片
image
推荐阅读
- 英雄联盟手游内测代号是哪一个_英雄联盟手游新游S和新游JK分别是什么游戏
- 创意、实现和合作(一次原创H5的尝试)
- 不标题
- 133-|133- 股东文化和利益相关者文化
- KAI和郑秀晶分手了,粉丝们这次真的高兴了
- 神经网络|吴恩达深度学习 1.3神经网络和深度学习-浅层神经网络
- 数据结构和算法|数据结构和算法基础(6)——常用十种算法
- 数据结构和算法|数据结构和算法基础(2)——递归
- 投稿|钉钉和企微之后,飞书如何才能夹缝生长?
- 银行|拆解六大行中报:疫情和房地产阵痛下的抗压能力检测报告|看财报