条件语句
条件语言和分支是一个高级编程语言必须具备的特性,go语言中也提供了if和switch两种分支条件语句
if
语法
func getSex(sex int){
if sex==0{
fmt.Println("男")
}else if sex == 1{
fmt.Println("女")
}else{
fmt.Println("输入错误")
}
}
if 语句也可以将一个表达式放在判断条件中,并且表达式中的变量作用范围只是在此if语句中生效
func getMax(a, b int) {
if a = a + 1; a > b {
fmt.Println("a",a)
}else {
fmt.Println("b",b)
}
}
switch
switch 是处理多个条件或者分支的更加简洁的语法糖,go语言中提供了两种switch 语法
普通的switch
func displaySwitch(month int) {
switch month {
case 1:
fmt.Print("星期一")
case 2:
fmt.Print("星期二")
default:
fmt.Print("请输入正确")
}
}
这种switch语法糖几乎每种语言都有,如果涉及到区间,这样做就很麻烦了,所以go语言有了带条件的switch语句
func getGrage(grage int) string {
switch true {
case grage < 60:
return "不及格"
case grage > 60 && grage <= 70:
return "良"
case grage == 100:
return "满分"
default:
panic("不合法")
}
}
循环语句
go语言中提供了一种语法糖的循环关键字:for
n以内的和:
func sum(num int) int {
sum := 0
for i := 0; i <= num; i++ {
sum += i
}
return sum
}
将整数转换为2进制
可以没有开始条件
func convertToBin(num int) string {
result := ""
for ; num > 0; num /= 2 {
lsb := num % 2
result = strconv.Itoa(lsb) + result
}
return result
}
根据文件名从文件中读出数据并打印
可以没有开始和结束条件,其实相当于while(){}…
func printFile(fileName string) {
file, e := os.Open(fileName)
if e != nil {
panic(e)
}
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}
死循环
func forever() {
for ; ; {
fmt.Println("hello")
}
}
OR
func forever1() {
for {
fmt.Println("你好")
}
}
其实循环内部实现的底层都一样,只是为了不同的场景,各个语言对外提供的api语法糖表现不一样罢了,go语言就统一了这种 ”不一样“ ,用for代替所有的循环