递增递减语句
在GO中,++与--是作为语句而并不是作为表达式

package main
import "fmt"
func main() {
a:=
//a=a++ //语句而非表达式,只能放左边,go里不支持
a++
fmt.Println(a)
}

判断语句if
条件表达式没有括号,块需加花括号 即使只有一行
支持一个(只支持1个)初始化表达式(可以是并行方式)
左大括号必须和条件语句或者else在同一行
支持单行模式
初始化语句中的变量为block级别,同时隐藏外部同名变量

package main
import "fmt"
func main() {
a:=
if a,b:=,; a<b { //左大扩号必须和if同行 if a:=2,b:=3; a<b写法错误,只支持1个初始化表达式
fmt.Println(a) //
}
fmt.Println(a) //只在if语句块里有值 10
fmt.Println(b) //undefined: b
}

循环语句for
GO只有for一个循环语句关键字,但支持3种形式
初始化和步进表达式可以是多个值
条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替
左大括号必须和条件语句在同一行(格式化)
第一种形式

package main
import "fmt"
func main() {
a:=
for{
a++
if a>{
break
}
fmt.Println(a) }
}

第二种形式

func main() {
a:=
for a<{
a++
fmt.Println(a)
}
}

第三种形式

func main() {
for a:=;a<;a++{
fmt.Println(a)
}
}

注意

func main() {
s:="abcd"
for a:=;a<len(s);a++{ //每次循环 都会执行len(s) 建议赋值给变量再放在for判断表达式里
fmt.Println(a)
}
}

分支选择 switch语句
可以使用任何类型或表达式作为条件语句
不需要写break,一旦条件符合自动终止
如希望继续执行下一个case,需使用fallthrough语句
支持一个初始化表达式(可以是并行式),右侧需跟分号
左大括号必须和条件语句在同一行

func main() {
a:=
switch a{
case :
fmt.Println("a=0")
case :
fmt.Println("a=1")
fmt.Println("ok")
default:
fmt.Println("default")
}
}
func main() {
a:=
switch {
case a>=:
fmt.Println("a=0")
case a>=:
fmt.Println("a=1")
fmt.Println("ok")
default:
fmt.Println("default")
}
}
//只输出a=0 自动break
func main() {
a:=
switch {
case a>=:
fmt.Println("a=0")
fallthrough
case a>=:
fmt.Println("a=1")
fmt.Println("ok")
fallthrough
default:
fmt.Println("default")
}
}
/*
输出
a=0
a=1
ok
default
*/
func main() {
switch a:=; {
case a>=:
fmt.Println("a=0")
fallthrough
case a>=:
fmt.Println("a=1")
fmt.Println("ok")
fallthrough
default:
fmt.Println("default")
}
fmt.Println(a);// undefined: a
}
//输出结果同上

跳转语句goto,break,continue
三个语法都可以配合标签使用
标签名区分大小写,若不使用会造成编译错误
break与continue配合标签可用于多层循环的跳出
goto是调整执行位置

func main() {
// LABEL1:
for{
for i:=;i<;i++{
fmt.Println(i);
if i>{
// break LABEL1
goto LABEL2
}
}
}
LABEL2:
}
func main() {
LABEL1:
for i:=;i<;i++{
for {
continue LABEL1
fmt.Println(i);
}
fmt.Println(i);
}
fmt.Println("ok!")
}
//只输出ok!
func main() {
LABEL1:
for i:=;i<;i++{
for{
fmt.Println(i)
continue LABEL1
}
}
}
//输出0-9 //continue换成goto 会死循环输出0

Go基本语句的更多相关文章

  1. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  2. whdxlib

    1 数据库系统实现 实 验 指 导 书 齐心 彭彬 计算机工程与软件实验中心 2016 年 3 月2目 录实验一.JDBC 应用程序设计(2 学时) ......................... ...

  3. 【.net 深呼吸】细说CodeDom(2):表达式、语句

    在上一篇文章中,老周厚着脸皮给大伙介绍了代码文档的基本结构,以及一些代码对象与CodeDom类型的对应关系. 在评论中老周看到有朋友提到了 Emit,那老周就顺便提一下.严格上说,Emit并不是针对代 ...

  4. 将表里的数据批量生成INSERT语句的存储过程 增强版

    将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...

  5. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  6. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

  7. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  8. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  9. MyBatis源码分析(二)语句处理器

    StatementHandler 语句处理器,主要负责语句的创建.参数的设置.语句的执行.不负责结果集的处理. Statement prepare(Connection connection, Int ...

  10. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

随机推荐

  1. java中TreeMap集合的常用方法

    实现Map集合的方法这里就不在讲了 https://www.cnblogs.com/xiaostudy/p/9510763.html public Map.Entry<K,V> ceili ...

  2. Java Swing窗体小工具实例 - 原创

    Java Swing窗体小工具实例 1.本地webserice发布,代码如下: 1.1 JdkWebService.java package server; import java.net.InetA ...

  3. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  4. DEV控件的Gridview小技巧总结

    1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].OptionsColumn.AllowEd ...

  5. 十二道MR习题 – 1 – 排序

    题目: 一个文件,大小约为100G.文件的每一行都是一个数字,要求对文件中的所有数字进行排序. 对于这个题目,了解过Hadoop的同学可以笑而不语了.即使用spark实现也是非常简单的事情. 先说下如 ...

  6. 初探UiAutomator2.0中使用Xpath定位元素

    J 今天的主题是讲一下在使用过程中遇到的一个问题,如何在UiAutomator2.0中使用Xpath定位元素? 背景 现在的app在打包成apk的时候都是有加固处理的,各种混淆加固,所以已经破坏了或扰 ...

  7. python关于sys.argv列表的应用场景

    python关于sys.argv列表的应用场景 1.需求很简单: 使用 sys.argv 获取命令行参数(即要判断的文件名),然后判断文件是否存在,文件存在再进一步判断是否有读权限 2.分析: (1) ...

  8. GO学习笔记:struct类型

    Go语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器.例如,我们可以创建一个自定义类型person代表一个人的实体.这个实体拥有属性:姓名和年龄.这样的类型我们称之 ...

  9. Ajax基础(一)--创建请求

    浏览器创建ajax请求: 1.如果是Firefox.Opera.Safari等高级浏览器,可使用XMLHttpRequest()方式创建一个新的ajax请求对象. 如果是IE浏览器,则使用Active ...

  10. 【scala】apply和update

    我们在使用scala的时候经常会用到对象的apply方法和update方法. 虽然我们表面没有察觉,但是实际上两个方法都会遵循相关约定被调用. apply apply方法的约定:用括号传递给变量(对象 ...