1,运算符
算数运算符:+ - * / % ++ --
关系运算符:== != < > <= >==
逻辑运算符:按位与 & 按位或 | 异或 ^ 左移<< 右移 >>
赋值运算符:= += -= *= /= 等等算数运算符和逻辑运算符与 = 组合
其他运算符
运算符 术语 示例 说明
& 取地址运算符 &a 变量a的地址
* 取值运算符 *a 指针变量a所指向内存的值
2,流程控制
Go语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
选择结构
1)if
var a int = 3 if a == 3 { //条件表达式没有括号 fmt.Println("a==3") } //支持一个初始化表达式, 初始化字句和条件表达式直接需要用分号分隔 if b := 3; b == 3 { fmt.Println("b==3") }
if ... else
if a := 3; a == 4 { fmt.Println("a==4") } else { //左大括号必须和条件语句或else在同一行 fmt.Println("a!=4") }
if ... else if ... else
if a := 3; a > 3 { fmt.Println("a>3") } else if a < 3 { fmt.Println("a<3") } else if a == 3 { fmt.Println("a==3") } else { fmt.Println("error") }
2)switch
Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码:
var score int = 90 switch score { case 90: fmt.Println("优秀") //fallthrough case 80: fmt.Println("良好") //fallthrough case 50, 60, 70: fmt.Println("一般") //fallthrough default: fmt.Println("差") }
循环结构
1)for
var i, sum int for i = 1; i <= 100; i++ { sum += i } fmt.Println("sum = ", sum)
2)rang
关键字 range 会返回两个值,第一个返回值是元素的数组下标,第二个返回值是元素的值
s := "abc" for i := range s { //支持 string/array/slice/map。 fmt.Printf("%c ", s[i]) } for _, c := range s { // 忽略 index fmt.Printf("%c ", c) } for i, c := range s { fmt.Printf("%d, %c ", i, c) }
跳转语句
1)break和continue
for i := 0; i < 5; i++ { if 2 == i { //break //break操作是跳出当前循环 continue //continue是跳过本次循环 } fmt.Println(i) }
注意:break可⽤于for、switch、select,⽽continue仅能⽤于for循环。
2)goto
用goto跳转到必须在当前函数内定义的标签
func main() { for i := 0; i < 5; i++ { for { fmt.Println(i) goto LABEL //跳转到标签LABEL,从标签处,执行代码 } } fmt.Println("this is test") LABEL: fmt.Println("it is over") }