Go语言学习笔记 - 表达式

技术学习 · · 1034 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang关键字

break case chan const continus default defer else fallthrough for func go goto
if import interface map package range return select struct switch type var

Goang运算符

  不支支持运算符重载。尤其需要注意,"++"、"--" 是语句而而非非表达式。

+  &  +=  &=  &&  ==  !=  (  )
-  |  -=  |=  ||  <  <=  [  ]
*  ^  *=  ^=  <-  >  >=  {  }
/  <<  /=  <<=  ++  =  :=  ,  ;
%  >>  %=  >>=  --  !  ...  .  :
&^  &^=

控制流

x := 0
if n := "abc"; x > 0 {// 初始化语句未必就是定义变量,比如 println("init") 也是可以的。
    println(n[2])
} else if x < 0 {// 注意 else if 和 else 左大大括号位置。
    println(n[1])
} else {
    println(n[0])
}

循环

  支支持三种循环方方式,包括类 while 语法。

s := "abc"
for i, n := 0, len(s); i < n; i++ {// 常见的 for 循环,支持初始化语句。
    println(s[i])
}
n := len(s)
for n > 0 {// 替代 while (n > 0) {}
    println(s[n])// 替代 for (; n > 0;) {}
    n--
}
for {// 替代 while (true) {}
    println(s)// 替代 for (;;) {}
}

Rang

  类似迭代器操作,返回 (索引, 值) 或 (键, 值)。

            1st  value      2nd  value
------------------+-------------------+------------------+-------------------
string          index          s[index]    unicode,    rune
array/slice       index          s[index]
map            key           m[key]
channel         element

  可忽略不想要的返回值,或用 "_" 这个特殊变量。

s := "abc"
for i := range s {// 忽略 2nd value,支支持 string/array/slice/map。
    println(s[i])
}
for _, c := range s {// 忽略 index。
    println(c)
}
for range s {// 忽略全部返回值,仅迭代。
    ...
}
m := map[string]int{"a": 1, "b": 2}
for k, v := range m {// 返回 (key, value)。
    println(k, v)
}

Switch

  分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。

x := []int{1, 2, 3}
i := 2
switch i {
  case x[1]:
    println("a")
  case 1, 3:
    println("b")
  default:
    println("c")
}

  如需要继续下一分支,可使用 fallthrough,但不再判断条件。省略条件表达式,可当 if...else if...else 使用。

Goto,Break,Continue

  支持在函数内 goto 跳转。标签名区分大小写,未使用标签引发错误。配合标签,break 和 continue 可在多级嵌套循环中跳出。

func main() {
L1:
  for x := 0; x < 3; x++ {
  L2:
    for y := 0; y < 5; y++ {
      if y > 2 { continue L2 }
      if x > 1 { break L1 }
        print(x, ":", y, " ")
    }
    println()
  }
}

附:break 可用于 for、switch、select,而 continue 仅能用于 for 循环。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:技术学习

查看原文:Go语言学习笔记 - 表达式

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1034 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传