Go基础之条件语句和循环语句

一.条件语句 

if 语句 

  • if的条件里是不需要括号的

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    const filename = "abc.txt"  //文件"abc.txt"要放在工程的根目录下
    
    contents, err := ioutil.ReadFile(filename)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n", contents)
    }
}

  • go中的if后可以跟多条语句,语句之间用分号隔开 
  • if 的条件里可以赋值,if条件里赋值的变量的作用域就在这个if语句块中

if contents, err := ioutil.ReadFile(filename); err != nil {
           fmt.Println(err)
   }else {
       fmt.Printf("%s\n", contents)
   }

fmt.Printf("%s\n", contents)   //这里会报错 因为 contents 不存在

注意:这里的contents的作用域与上面的contents不同,上面的contents除了if语句块后还存在,而这里的contents在出了if语句块后就不存在了,因为这里的contents是定义在if语句块中的 

 switch 语句 

  • go中的switch语句每个case自带break,不需要额外去写,除非使用fallthrough
  • "swicth"后面可以没有表达式,而把条件加到case后面

func switchtest(a int) int{
    n, m := 2,3
    switch a {
        case 0 :   // 表示a=0
            return n+m
        case 1 :
            return m-n
        default :
            return -1         
    }
}

func switchtest(a int) int{
    n, m := 2,3
    switch {
        case a>10:   
            return n+m
        case a<=10:
            return m-n
        default :
            return -1         
    }
}

二.循环语句 

  • for的条件里不需要括号
  • for的条件里可以省略初始条件,结束条件,递增表达式

//实现将十进制数转为二进制

func intToBin(n int) string {
    result := ""
    for ; n >0 ; n /= 2 {          //这里的for省略了初始条件
        lsb := n%2   
        result = strconv.Itoa(lsb) + result     //倒着放每次对2取余后的数   
        
    }
    return result
}

注:func FormatInt(i int64, base int) string

返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。

Itoa是FormatInt(i, 10) 的简写  即把十进制数转换为string

//另一种读取文件内容的方式

func readFile(filename string) {
    file, err := os.Open(filename)
    if err != nil {
        log.Panic(err)
    }
   
    scanner := bufio.NewScanner(file)
    
    for scanner.Scan() {     //这里的for 同时省去了起始条件和自增条件,只有一个结束判断条件,连分号都省略了
        fmt.Println(scanner.Text())
    }
}

注: func NewScanner

  func NewScanner(r io.Reader) *Scanner

  NewScanner创建并返回一个从r读取数据的Scanner,默认的分割函数是ScanLines。

  • go语言中没有"while"循环语句,可以直接用for什么条件都不加来写一个死循环 

for {

 //代码块

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值