Go语言基础07-语句

Go语言基础07-语句_第1张图片
语句

分为一般语言都有的语句:

  • 选择语句:if...else, switch
  • 循环语句:for

Go特有的语句:

  • 并发go和通信chan
  • 延迟defer、panic和recover

选择语句

if... else...

// 推荐的用法是不用else,直接在if里返回
if err := doSome(); err != nil {
 xxx
}
xxxx

swith

// 不需要break(相当于每个case下会默认帮忙补全break)
// 如果需要连续执行,需要添加fallthrough
switch val.(type) {
case string:
  xxx
case int, int32, int64:
  xxx
case bool:
  xxx
  fallthrough
case float64:
  xxx
default:
  xxx
}

循环语句

for

// 一般的索引递增
for i:=0; i< len(arr); i++ {
  xxx
}

// for ...range进行遍历
for k,v := range map {
  xxx
}
for i, item := range arr {
  xxx
}

并发

使用go关键词创建并发(异步)

go func(){
  doAPIReq()
}()

延迟、panic和 recover

使用defer语句定义延迟操作,定义的延迟操作会在return的前一步执行
通常用于关闭通道、文件等

func getFileContent() string {
    f, _ := os.OpenFile(name, os.O_RDONLY, 0)
    defer f.Close() // idiomatic Go code!
    contents, _ := ioutil.ReadAll(f)
    return string(contents)
}

panic和error的区别是,err 是将错误记录下来。但是panic是在遇到预期之外的错误,记录错误,并中断程序的执行。

func doSome() {
  xxx
  //这里发生了什么,预期之外
  if xxx {
  panic("info")
  } 
}

recover用于恢复异常,通常是在一个方法A内发生了panic,则在调用A的外层方法中实行recover(),恢复程序的执行,并转换成err。

func B() {
  defer func(){
    if e := recover(); e != nil {
      xxx
    }
  }()

  doSome()
}

你可能感兴趣的:(Go语言基础07-语句)