今天晚上有考试,所以就提前总结了!(这其实是下午3点写的话) Task04的任务是了解Go语言中的运算符和控制语句,有编程基础的同学对运算符再熟悉不过了,我们就简单介绍一下吧。

运算符

Go支持普通的数字运算符,下面的表格列出了当前支持的运算符,以及其优先级。它们全部是从左到右结合的。
汇总一下Go语言内置的运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符 详情请自行搜索学习,这里不做赘述。 控制结构

在Go中只有很少的几个控制结构d。例如这里没有do或者while循环,只有for。有(灵活的)switch语句和if,而switch接受像for那样可选的初始化语句。还有叫做类型选择和多路通讯转接器的select(后面再叙述)。语法有所不同(同C相比):无需圆括号,而语句体必须总是包含在大括号内

//if-eles
//在Go中if看起来是这样的:
if x > 0 {  //这里"{" 不能移到下面.必须和if在同一行
  return  y
} else {
  return x
}

强制大括号鼓励将简单的if语句写在多行上。无论如何,这都是一个很好的形式,尤其是语句体中含有控制语句,例如return或者break。if和switch接受初始化语句,通常用于设置一个(局部)变量。

if err := Chmod(0664); err!= nil {   //nil与C的 NULL类似
    fmt.Printf(err)          // err的作用域被限定在if内
    return err
}

goto

Go有goto语句——明智的使用它。用goto跳转到一定是当前函数内定义的标签。例如假设这样一个循环:

func myfunc(){
      i := 0
Here:        <--这行的第一个词,以分号结束作为标签
      println(i)
      i++
      goto Here   <--跳转
  }

注意:标签名是大小写敏感的。

for控制结构

Go的for循环有三种形式,只有其中的一种使用分号。

for init; condition; post { }  //和C的for一样
for condition { }    //和while一样
for { }           //死循环

最后,由于Go没有逗号表达式,而++和–是语句而不是表达式,如果你想在for中执行多个变量,应当使用平行赋值。

// Reverse a
for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
    a[i], a[j] = a[j], a[i]    //平行赋值
    }

break和continue

利用break可以提前退出循环,break终止当前的循环。

for i := 0; i < 10; i++ { 
    if i > 5{
    break  //终止这个循环,只打印0到5
    }
    println(i)
}

循环嵌套循环时,可以在break后指定标签。用标签决定哪个循环被终止:

J:  for j := 0; j < 5; j++ { 
        for i := 0; i < 10; i++ {
            if i > 5  {
                break J  //现在终止的是j循环,而不是i的那个
            }
            println(i)
            }
    }

利用continue让循环进入下一个迭代,而略过剩下的所有代码。下面循环打印了0到5。

for i := 0; i < 10; i++ {
    if i > 5{
       continue   //跳过循环中所有的代码println(i)
    }

range

关键字range可用于循环。它可以在slice、array、string、map和channel(参阅第6章)。range是个迭代器,当被调用的时候,从它循环的内容中返回一个键值对。基于不同的内容,range返回不同的东西。当对slice或者array做循环时range返回序号作为键,这个序号对应的内容作为值。考虑这个代码:

list := []string {"a", "b", "c", "d", "e", "f"}  //0
for k, v := range list{ //1
     //对k和v做想做的事情   // 2
}

// 0:创建一个字符串的slice //1:用range对其进行循环。每一个迭代,range将返回int类型的序号,string类型的值,以0和“a”开始。 // 2:k的值为0...5,而v在循环从“a”...“f”。 未完待续 明天有课设答辩,要准备好多材料,暂且就总结到这里!溜啦