分享
  1. 首页
  2. 文章

Golang筑基 ——条件/循环语句

技术修仙 · · 1093 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在golang中添加语句有if else,switch,select 三种,循环语句只有for
如下

if语句

package main
import "fmt"
func main() {
 /* 局部变量定义 */
 var a int = 100;
 
 /* 判断布尔表达式 */
 if a < 20 {
 /* 如果条件为 true 则执行以下语句 */
 fmt.Printf("a 小于 20\n" );
 } else {
 /* 如果条件为 false 则执行以下语句 */
 fmt.Printf("a 不小于 20\n" );
 }
 fmt.Printf("a 的值为 : %d\n", a);
}

switch语句

package main
import "fmt"
func main() {
 /* 定义局部变量 */
 var grade string = "B"
 var marks int = 90
 switch marks {
 case 90: grade = "A"
 case 80: grade = "B"
 case 50,60,70 : grade = "C"
 default: grade = "D" 
 }
 switch {
 case grade == "A" :
 fmt.Printf("优秀!\n" ) 
 case grade == "B", grade == "C" :
 fmt.Printf("良好\n" ) 
 case grade == "D" :
 fmt.Printf("及格\n" ) 
 case grade == "F":
 fmt.Printf("不及格\n" )
 default:
 fmt.Printf("差\n" );
 }
 fmt.Printf("你的等级是 %s\n", grade ); 
}

fallthrough

使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。

package main
import "fmt"
func main() {
 switch {
 case false:
 fmt.Println("1、case 条件语句为 false")
 fallthrough
 case true:
 fmt.Println("2、case 条件语句为 true")
 fallthrough
 case false:
 fmt.Println("3、case 条件语句为 false")
 fallthrough
 case true:
 fmt.Println("4、case 条件语句为 true")
 case false:
 fmt.Println("5、case 条件语句为 false")
 fallthrough
 default:
 fmt.Println("6、默认 case")
 }
}
输出:
2、case 条件语句为 true
3、case 条件语句为 false
4、case 条件语句为 true

从以上代码输出的结果可以看出:switch 从第一个判断表达式为 true 的 case 开始执行,如果 case 带有 fallthrough,程序会继续执行下一条 case,且它不会去判断下一个 case 的表达式是否为 true。

select语句

select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。

select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的

package main
import "fmt"
func main() {
 var c1, c2, c3 chan int
 var i1, i2 int
 select {
 case i1 = <-c1:
 fmt.Printf("received ", i1, " from c1\n")
 case c2 <- i2:
 fmt.Printf("sent ", i2, " to c2\n")
 case i3, ok := (<-c3): // same as: i3, ok := <-c3
 if ok {
 fmt.Printf("received ", i3, " from c3\n")
 } else {
 fmt.Printf("c3 is closed\n")
 }
 default:
 fmt.Printf("no communication\n")
 } 
}

关于select 的详细介绍,请移步https://www.jianshu.com/p/4ce6d1b1c00b

for 循环

for循环在golang中很常用,可以用于循环执行一段代码,也可以跟range配合实现用来遍历slice、map、list等数据结构。
并且,golang 的无限循环也是通过for实现的。
如下:

普通循环
package main
import "fmt"
func main() {
 sum := 0
 for i := 0; i <= 10; i++ {
 sum += i
 }
 fmt.Println(sum)
}
无限循环
package main
import "fmt"
func main() {
 sum := 0
 for {
 sum++ // 无限循环下去
 }
 fmt.Println(sum) // 无法输出
}

For-each range 循环

package main
import "fmt"
func main() {
 strings := []string{"google", "runoob"}
 for i, s := range strings {
 fmt.Println(i, s)
 }
 numbers := [6]int{1, 2, 3, 5}
 for i,x:= range numbers {
 fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
 } 
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:技术修仙

查看原文:Golang筑基 ——条件/循环语句

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1093 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏