• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Golang学习笔记(三):控制流

Golang学习笔记(三):控制流

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了Golang学习笔记(三):控制流等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

控制结构分为: 条件+选择+循环

IF

1.说明

条件表达式没有括号
支持一个初始化表达式(可以是多变量初始化语句)
初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用
左大括号必须和条件语句在同一行(必须与if/else在同一行)
go没有三元运算符

if判断语句条件不需要括号
在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用
花括号一定存在,且必须与if/else在同一行
</div>

2.语法
//基本
if a > 0 {  //无括号
     dosomething()
} else if a == 0 { //必须用花括号
     doothertings()
} else {
     donothing()
}

//单行模式
if a > 0 { a += 100 } else { a -= 100 }
</div>

3.示例
package main

func main(){
    a := 10

    if a > 0 {
        a += 100
    } else if a == 0 {
        a = 0
    } else {
        a -= 100
    }
    println(a)

    b := 101
    if b > 0 { b += 100 } else { b -= 100 }
    println(b)
}

//支持一个初始化语句
if a:=1; a<10 { //允许在条件之前执行一个简单语句,由此语句定义的变量作用域仅在if/else范围内
    return a
}
if a, b := 1,2; a+b == 10 {
}

if x := computedValue(); x > 10 {
} else {
}
</div>

4.结果
110
201
</div>

注意,在有返回值的函数中,不允许将“最终的”return语句放到if ... else ... 结构中,否则编译失败
func example(x int) int {
    if x == 0 {
        return 5
    } else {
        return x
    }
}
</div>

FOR

for是go的"while", 只支持for关键字.有三种形式

1.语法
for init; condition; post {
    //init不支持逗号,只能平行赋值
    //condition每次循环开始都会检查,不建议在里面使用函数,建议用计算好的变量/常量代替
    //post后面必须跟花括号,每轮循环结束的时候调用
}

for i:=0; i<10; i++ {
}

-----------------------------

for condition {
    dosomething()
}

i:=1
for i<10 {
}

-----------------------------

for { //无限循环
    dosomething()
}

for {
    a++
    if a > 10 {
        break
    }
}

-----------------------------
</div>

2.说明
a. 初始化和步进表达式可以使多个值:必须使用平行赋值
    i, j:=0,len(a)-1; i<j; i,j=i+1,j-1
b.每次循环都会重新检查条件表达式
</div>

3.示例
package main

func main(){
    ss := "abcd"
    for i:=0; i<len(ss); i++ {
        println(ss[i])
    }
}
</div>
得到:
97
98
99
100
</div>

4.配合range

for循环和保留字range一起使用,完成迭代器iterator操作

string, array, slice, map, channel都可以用range进行迭代器操作

range返回序号和值,若是不想要,可以用_
  for i, c := range "abc" {
      fmt.Printf("s[%d] = %c\n", i, c)
  }
</div>
得到
  s[0] = a
  s[1] = b
  s[2] = c
</div>

SWITCH

python里面没有

1.语法

支持初始化表达式
switch a:=5; a { //默认break,匹配成功后不会自动向下执行其他case,而是跳出整个switch
    case 0:         //普通
        println(a)
    case 1, 2:      //多个分支,逗号分隔
        println(a)
    case 100:       //什么都不做
    case 5:
        println(a)
        fallthrough   //进入后面的case 进行处理,而不是跳出block
    default:
        println(a)    //默认
}
注意,不需要break来明确退出一个case,一旦条件符合,自动终止,除非使用fallthough

--------------

可以不带表达式
switch sExpr {
        case expr1: //sExpr和expr1必须类型一致,不限制为常

您可能想查找下面的文章:

相关文章

  • GO语言实现的端口扫描器分享
  • PHP与Go语言之间的通信详解
  • Go语言里的结构体文法实例分析
  • go语言简单的处理http请求的函数实例
  • mac下golang安装了windows编译环境后编译变慢
  • Go语言中的Array、Slice、Map和Set使用详解
  • Go语言运行环境安装详细教程
  • golang的HTTP基本认证机制实例详解
  • go语言睡眠排序算法实例分析
  • Go语言接口用法实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言获取数组长度的方法
    • linux中用shell快速安装配置Go语言的开发环境
    • 理解Golang中的数组(array)、切片(slice)和map
    • Go语言中slice的用法实例分析
    • golang简单获取上传文件大小的实现代码
    • Go语言多值替换的HTML模板实例分析
    • linux下通过go语言获得系统进程cpu使用情况的方法
    • go语言获取系统盘符的方法
    • GO语言求100以内的素数
    • go语言遍历文件夹示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有