【GO】GO语言学习笔记四

流程控制

1、条件语句

举个栗子:

if x>5 {
    return 1;
}else{
    return 0;
}

注意:

? 条件语句不需要使用括号将条件包含起来();
? 无论语句体内有几条语句,花括号{}都是必须存在的;
? 左花括号{必须与if或者else处于同一行;
? 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔;
? 在有返回值的函数中,不允许将“最终的”return语句包含在if...else...结构中,
否则会编译失败:
function ends without a return statement。
失败的原因在于,Go编译器无法找到终止该函数的return语句。

2、选择语句

举个栗子

switch i {
    case 0:
        fmt.Printf("0")
    case 1:
        fmt.Printf("1")
    case 2:
        fallthrough
    case 3:
        fmt.Printf("3")
    case 4, 5, 6:
        fmt.Printf("4, 5, 6")
    default:
         fmt.Printf("Default")
}

switch后面的表达式甚至不是必需的,比如下面的例子:

switch {
    case 0 <= Num && Num <= 3:
        fmt.Printf("0-3")
    case 4 <= Num && Num <= 6:
        fmt.Printf("4-6")
    case 7 <= Num && Num <= 9:
       fmt.Printf("7-9")
}

注意:  

? 左花括号{必须与switch处于同一行;
? 条件表达式不限制为常量或者整数;
? 单个case中,可以出现多个结果选项;
? 与C语言等规则相反,Go语言不需要用break来明确退出一个case;
? 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case;

?可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个if...else...的逻辑作用等同。


3、循环语句

Go语言中的循环语句只支持for关键字,而不支持while和do-while 结构。关键字for的基本使用方法与C和C++中非常接近:

举个栗子:

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

Go语言 还进一步考虑到无限循环的场景,让开发者不用写无聊的for (;;) {} 和 do {} while(1);, 而直接简化为如下的写法:

sum := 0
for {
    sum := 0
    if(sum > 100){
          break
    }
}

在条件表达式中也支持多重赋值,如下所示: 

a := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(a) – 1; i < j; i, j = i + 1, j – 1 {
    a[i], a[j] = a[j], a[i]
}

注意:  

? 左花括号{必须与for处于同一行。

? Go语言中的for循环与C语言一样,都允许在循环条件中定义和初始化变量,唯一的区别是,Go语言不支持以逗号为间隔的多个赋值语句,必须使用平行赋值的方式来初始化多个变量。

? Go语言的for循环同样支持continue和break来控制循环,但是它提供了一个更高级的break,可以选择中断哪一个循环,如下例:

for j := 0; j < 5; j++ {
	for i := 0; i < 10; i++ {
	if i > 5 {
		break JLoop
	}
	 mt.Println(i)
	}
}
JLoop: // ...

本例中,break语句终止的是JLoop标签处的外层循环。  

4、跳转语句

goto语句的语义非常简单,就是跳转到本函数内的某个标签,如:

func myfunc() {
	i := 0
    HERE:
    fmt.Println(i)
    i++
    if i < 10 {
  		goto HERE
  	}
}

  

  

 

 

时间: 2024-10-22 13:12:20

【GO】GO语言学习笔记四的相关文章

Go语言学习笔记(四) [array、slices、map]

日期:2014年7月22日 一.array[数组] 1.定义:array 由 [n]<type> 定义,n 标示 array 的长度,而 <type> 标示希望存储的内容的类型. 例如: var arr[10] int arr[0] = 1 arr[1] = 2 数组值类型的:将一个数组赋值给 另一个数组,会复制所有的元素.另外,当向函数内传递一个数组的时候,它将获得一个数组的副本,而不是数组的指针. 2.数组的复合声明.a :=[3]int{1,2,3}或简写为a:=[...]i

C语言学习笔记(四) 运算符优先级

C语言中有很多运算符,除了四则运算,还有位运算.比较运算.逻辑运算.赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼.通常建议在写代码的时候不用省略括号,但是并不是所有程序员都会按照这个规矩来,因此还是有必要记录一下,以备查阅. 下面表格中详细记录了各种运算符的优先级.没有必要死记硬背这张表,代码见多了用多了就慢慢记得了.总结几个比较重要的原则: 取成员的"0"目运算符[() . -> []]优先级最高: 单目运算符高于双目运算符: 四则运算高于移位运算: 移位运算高于比较运算

初探swift语言的学习笔记四(类对象,函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29606137 转载请注明出处 假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! swift扩展了非常多功能和属性,有些也比較奇P.仅仅有慢慢学习,通过经验慢慢总结了. 以下将初步学习一下类的写法. 码工,最大爱好就是看码,而不是文字,太枯燥. // // computer.swift // swiftDemo // // C

初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)

在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助. 看例子: 例子中包括 callback函数的声明与使用 函数作为形参进行传递 函数作为返回值 函数支持泛型,当然class也支持. import Foundation typealias Point = (Int, Int) let origin: Point = (0, 0) //初始化函数用 func willDoit(sender : CallBackManager) { println("willD

Caliburn.Micro学习笔记(四)----IHandle&lt;T&gt;实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

如何输出格式化的字符串(学习笔记四)

如何输出格式化的字符串(学习笔记四) 我们经常会输出类似 '亲爱的xxx你好!你xx月的话费是xx,余额是xx' 之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式. 在Python中,采用的格式化方式和C语言是一致的,用 % 实现,举例如下: >>> 'Hello, %s' % ('world') 'Hello, world' 截图如下: 注: (1)红线上的百分号,两边可有空格也可无: (2)对于只有一个变量的情况,我们可以将'world'外的括号

JavaScript--基于对象的脚本语言学习笔记(一)

1.两种嵌入js的方式 使用javascript前缀构建url:<a href="javascript:alert('运行JavaScript..')">运行js</a> js脚本放在<style></style>之间: <style type="text/javascript"> alert("运行JavaScript..") </script> 2.如果没有声明变量直接使

C语言学习笔记(五) 数组

数组 数组的出现就是为了解决大量同类型数据的存储和使用的问题: 数组的分类:一维数组.二维数组. 一维数组:为多个变量连续分配存储控件:所有的变量的数据类型必须相同:所有变量所占的字节大小必须相等: 例如:int a[4]; 一维数组名不代表数组中的所有元素而是代表数组中第一个元素的地址: 数组的初始化: 完全初始化: int a[4] = {1,2,3,4}; 不完全初始化: int a[4] = {1};  未被初始化的元素的值默认为0; 数组清零 int a[4] = {0}; 不初始化: