每种语言都有条件控制语句,既然大家都有一定的编程经验了,那我们就来点Go不一样的东西,就不中规中矩的讲if else 是什么了,我们直接上一段读取文件内容的代码
const filename = "learn.txt"
if contents, err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
上面的这段代码,ioutil.ReadFile是用来读取文件内容的,它返回了两个值,所以我们需要用两个值进行接受,怎么样,这里是不是与其他的编程语言不太一样了呢,其他的语言还得try except, 我们这里不用这么捕获错误,直接在返回值里面加上就可以了,也许你现在还不能适应这种写法,不过等你写的多了,你会发现这样真的很方便,if后面是不需要括号的,其实if else 在上面这种使用场景还是很多的,要好好的看一下。
下面我们要讲的是switch,这个在Python里面是没有的,当然可以使用其他的方法实现同样的功能,但是Go的switch与其他语言有点不同,它是自带break的,就是说当你的case有个满足条件以后,下面的case就不会在执行了,当然这里你可以使用fallthrough进行强行穿透,但是这个fallthrough也有缺点,就是它会强制执行下面的case就是说如果你在上一个case中加了fallthrough那么下面的case不论是否满足条件都会执行,这个其实并不是很好用,强烈建议如果有多层判断的需求并且希望可以执行多个结果时,直接用if
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 <= 100:
g = "A"
}
return g
}
怎么样学会了嘛, 学会了可以奖励自己买个switch玩一下,哈哈。。。。。。
网友评论