递增递减语句
在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. spring半自动代理

    1.被代理类接口Person.java package com.xiaostudy; /** * @desc 被代理类接口 * * @author xiaostudy * */ public inte ...

  2. 从TensorFlow 到 Caffe2:盘点深度学习框架

    机器之心报道 本文首先介绍GitHub中最受欢迎的开源深度学习框架排名,然后再对其进行系统地对比 下图总结了在GitHub中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在GitHub里的收藏数 ...

  3. SpringBoot实现多数据源(实战源码)

    通过一个数据库的表数据去查询同步另一个数据库,之前的方式是通过写个小工具,然后jdbc方式进行处理,这个方式也挺好用的.学习了springboot后发现可以实现多数据源操作,然后就具体实现以下. 以下 ...

  4. LeetCode第[36]题(Java):Valid Sudoku

    题目:有效的数独表 难度:Medium 题目内容: Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be ...

  5. spark UDAF

    感谢我的同事 李震给我讲解UDAF 网上找到的大部分都只有代码,但是缺少讲解,官网的的API有讲解,但是看不太明白.我还是自己记录一下吧,或许对其他人有帮助. 接下来以一个求几何平均数的例子来说明如何 ...

  6. HTTP Status 500 - com.opensymphony.xwork2.ActionSupport.toAddPage()

    使用struts2过程中碰到以下错误 HTTP Status 500 - com.opensymphony.xwork2.ActionSupport.toAddPage() type Exceptio ...

  7. jsonp跨域传过来的数据格式

    var uri1 = 'https://api.github.com?callback=JSON_CALLBACK'; /**/JSON_CALLBACK({ "meta": { ...

  8. 'yii\base\InvalidRouteException' with message 'Unable to resolve the request "site/error".'

    引用:http://www.linuxidc.com/Linux/2015-02/114116.htm Yii2高级版本复制新项目会遇到下面的报错信息: exception 'yii\base\Inv ...

  9. WPF DataGrid 分组

    public ListCollectionView collection; collection = new ListCollectionView(obj.empData); collection.G ...

  10. stringToDateUtils 字符串转化日期

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...