Go语言学习笔记(语法篇) - 控制结构
2014-05-09 15:04
211 查看
Go语言的控制结构比Java、C语言都要少,只有很简单的几个,语法与也略有不同。
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
而且if接受初始化语句,初始化的变量为一个局部变量。
依旧有break,continue关键字,用法和其它语言一样。
range
range可以用于对集合的循环,集合后面在继续学习,先看一下用range来遍历数组。
Go语言的保留关键字
break default func interface selectcase defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
运算符
* / % << >> & &^ + - | ^ && || !if
if中的条件不需要用中括号()给包含起来。a := 1 b := 2 c := 3 if a < b && b < c { fmt.Println(true) } else { fmt.Println(false) }
而且if接受初始化语句,初始化的变量为一个局部变量。
if f, err := os.Open("c:/hello.go"); err == nil { fmt.Println(f.Name()) } else { fmt.Println(err) }
goto
在Java里这是一个保留关键字,但没有任何实际作用。goto用不好容易造成程序的逻辑混乱。下面用Lable标识一个标签,goto可以将执行跳转到这个标签位置,注意标签是大小写敏感的。func myfunc() { i := 0 Lable: fmt.Println(i) i++ if i < 10 { goto Lable } }
for
Go中没有while,do while循环,只有一个for,不过却可以完成各种灵活循环操作,同样也不需要中括号包含。依旧有break,continue关键字,用法和其它语言一样。
func main() { //跟Java相似的for循环 for i := 0; i < 10; i++ { fmt.Println(i) } //与While一样 for false { } /死循环 for { } Here: for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { fmt.Println(j) if j > 5 { break Here } } } }
range
range可以用于对集合的循环,集合后面在继续学习,先看一下用range来遍历数组。var ss []string = []string{"aaa", "bbb", "ccc", "ddd"} for i, v := range ss { fmt.Printf("索引是%d, 值是:%s\n", i, v) }
switch
Go的switch很灵活,不一定非要用常量,还支持表达式,下面一组代码片断是判断常量的。func main() { i := 0 switch i { case 0: //如果不加这个关键字,如果i等于0不会进到下面的case 1中 fallthrough case 1: fmt.Println(111) } }
func main() { ch := 'b' switch ch { //多个值用逗号分隔 case 'a', 'b', 'c': fmt.Println(111) default: fmt.Println(222) } }下面这段代码是 case表达式的
func main() { i := 10 switch { case i < 10: fmt.Println(111) case i < 20: fmt.Println(222) default: fmt.Println(333) } }非常灵活、强大的switch,但是也给我带来一个疑问,Go的编译器怎么对switch进行编译优化呢,假如说一个switch其中有几百甚至上千个case,起不是要按照顺序一个一个去匹配,时间复杂度就变成O(N)了,常量的switch好处就是可以让时间复杂度变成O(1)
相关文章推荐
- 水晶报表-控制结构-For 循环(Crystal 语法)
- scala常用语法之控制结构
- Php控制结构.语法
- Java基础语法(一)---数据、数值类型、运算符、程序流程控制语句和循环结构
- 水晶报表-控制结构-While 循环(Crystal 语法)
- 第十节:控制结构-简洁-if-else-elseif/else if-流程控制的替代语法
- scala常用语法之控制结构
- Go语言基础知识总结(语法、变量、数值类型、表达式、控制结构等)
- JavaScript基础语法:数据类型、变量、控制结构、函数、表达式
- Go语言学习笔记(三) [控制结构、内建函数]
- scala常用语法之控制结构
- scala常用语法之控制结构
- Go语言学习笔记(三) [控制结构、内建函数]
- scala常用语法之控制结构
- PHP语法(三):控制结构(For循环/If/Switch/While)
- java学习之路 之 基本语法-程序流程控制-循环结构-while循环练习题
- scala常用语法之控制结构
- shell 编程语法总结(I/O 逻辑控制结构)
- scala常用语法之控制结构
- scala常用语法之控制结构