我是靠谱客的博主 欣慰心情,最近开发中收集的这篇文章主要介绍golang-流程控制分支循环,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

[TOC]
golang提供了下面几个关键字:if/elseforswitch/case/fallthroughselectbreakcontinuegoto等,实现程序的分支控制,并且赋予它们不同的用法。在本节中我们会重点讨论除了select的其他关键字,select会放在并发和通信的时候提到。

分支

golang的分支语句的关键字为if/elseswitch/case/fallthroughselect后者会在并发和通信的时候提到。

  1. 一个if/else的语法如下:
if optionalStatement1; booleanExep {
    blocks
} else if optionalStatement2; booleanExep {
    blocks
} else {
    blocks
}

其中optionalStatement1是一个可选的表达式:

if a := addSomething(); a {
    fmt.Println(a)
}
//上面的代码等价于下面
a := addSomething()
if a {
    fmt.Println(a)
}
  1. switch语句
    golang的switch语句相较于C/C++有几点不同:首先它的case语句支持任意可比较的类型、其次是case语句不会自动向下执行,最后switch支持数据类型表达式的用法。
    • case语句支持任何能够做等于比较的数据类型
      golang
      switch ext := getext(file); ext {
      case "jpg":
      fmt.Println("jpg file")
      case "png":
      fmt.Println("png file")
      default:
      fmt.Println("other file")
      }
    • case语句不会自动向下执行,如果需要向下执行,需要添加fallthrough
      golang
      switch ext := getext(file); ext {
      case "jpg":
      fallthrough
      case "png":
      fmt.Println("image file")
      default:
      fmt.Println("other file")
      }
    • switch支持数据类型表达式的用法
      golang
      switch x.(type) {
      case bool:
      fmt.Println("x is bool")
      case int:
      fmt.Println("x is int")
      default:
      fmt.Println("other file")
      }

循环

对于循环控制,golang仅提供了for语句,但是赋予了其更加灵活的用法,足以满足需求:

for {
    //无限循环
}

for booleanExp {
    //条件循环,相当于while
}

for optionalStatement1; booleanExp {
}

for index, char := range aString {
    //迭代字符串
}

for char := range aString {
    //迭代字符串
}

for index, item := range anArrOrSlice {
    //迭代数组或切片
}

for item := range anArrOrSlice {
    //迭代数组或切片
}

for key, value := range anMap {
    //迭代字典
}

for key := range anMap {
    //迭代字典
}

for item := range Channels {
    //迭代通道
}

对于breakcontinuegoto,分别用于进行循环控制使用,满足一定条件跳出循环、结束本次循环以及跳转到指定位置。

最后

以上就是欣慰心情为你收集整理的golang-流程控制分支循环的全部内容,希望文章能够帮你解决golang-流程控制分支循环所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部