最近也是不怎么忙,弄通了服务器继续学Go!
2022-06-27 02:53:14 2025-02-09 11:06:43 Go语言学习教程 311 views
if的条件里可以赋值
if条件里赋值的变量作用域就在这个if语句里(外面无法访问)
func bounded(v int) int {
// if的条件里不需要括号
if v > 100{
return 100;
} else if v < 0 {
return 0;
} else {
return v;
}
}
//Go语言是可以返回两个值的
func main () {
const filename = "abc.txt"
//contents为文件内容 err为错误信息 具体返回内容看ReadFile方法内部
contents,err := ioutli.ReadFile(filename)
//判断报错是否为空
if err != nil {
fmt.Println(err)
} else {
//打印文件用Printf
//contents为byte数组
fmt.Printf("%s\n",contents)
}
}
//如果文件存在输出结果为文件中的内容,如果文件不存在输出结果为文件不存在
//上面内容可以简写为以下语句 但是contents和err只存在if语句内,无法在外面使用
func main () {
const filename = "abc.txt"
if contents,err := ioutli.ReadFile(filename); err != nil{
fmt.Println(err)
} else {
fmt.Printf("%s\n",contents)
}
}
switch会默认break,除非使用fallthrough
switch后面可以没有表达式
func eval(a,b int, op string) int {
var result int
switch op{
case "+":
result = a+b
case "-":
result = a+b
case "*":
result = a*b
case "/":
result = a/b
default:
//下面语句相当于报错
panic("unsupported operator:" + op)
}
return result
}
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
}
fmt.Println(
grade(0),
grade(60),
grade(82),
grade(99),
//抛去最后的grade(101)结果为F C B A
//存在最后一个grade(101)直接报错 panic: Wrong score: 101
//grade(101)
)