Go基本语法[TOC]1、运算符Go 语言内置的运算符有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符。(1)算数运算符运算符描述+相加-相减相乘/相除%求余++自增–自减(2)关系运算符运算符描述==检查两个值是否相等,如果相等返回 True 否则返回 False。!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。>检查左边值是否大于右边值,如果是返回 True 否则返回 False。<检查左边值是否小于右边值,如果是返回 True 否则返回 False。>=检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。<=检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。(3)逻辑运算符运算符描述&&逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。\ 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。!逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。(4)位运算符运算符描述&按位与运算符"&“是双目运算符。 其功能是参与运算的两数各对应的二进位相与。\ 按位或运算符”"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。^按位异或运算符"^“是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。<<左移运算符”<<“是双目运算符。左移n位就是乘以2的n次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<“右边的数指定移动的位数,高位丢弃,低位补0。>>右移运算符”>>“是双目运算符。右移n位就是除以2的n次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,">>“右边的数指定移动的位数。(5)赋值运算符运算符描述=简单的赋值运算符,将一个表达式的值赋给一个左值+=相加后再赋值-=相减后再赋值=相乘后再赋值/=相除后再赋值%=求余后再赋值<<=左移后赋值>>=右移后赋值&=按位与后赋值^=按位异或后赋值=按位或后赋值(6)其他运算符运算符描述&取地址符,返回变量存储地址*取值符,返回指针的变量特殊标识符 ‘’“”是特殊标识符,又称占位符(空标识符号),用来忽略结果。2、流程控制(1) IF条件表达式没有括号支持一个初始化表达式(可以是并行方式)左大括号必须和条件语句或else在同一行初始化语句中的变量为block级别,同时隐藏外部同名变量 (也就是类似java中的就近原则)func main( a:=true if a,b,c :=1,2,3;a+b+c>6{ fmt.Println(“大于6”) }else{ fmt.Println(“小于等于6”) })(2)Forgo语言没有while,因为for 可以替代while ,⽀持三种循环⽅式,包括类 while 语法。Go只有for一个循环语句关键字,但支持3种形式初始化和步进表达式可以是多个值条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替左大括号必须和条件语句在同一行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 (;;) {}}(3)switch可以使用任何类型或表达式作为条件语句不需要写break,一旦条件符合自动终止如希望继续执行下一个case,需使用fallthrough语句支持一个初始化表达式(可以是并行方式),右侧需跟分号左大括号必须和条件语句在同一行func main(){ a:=1 switch a{ //方式一 case 0: fmt.Println(“111”) case 1: fmt.Println(“222”) default: fmt.Println(“default”) } switch { //方式二 case a>=0: fmt.Println(“111”) case a>=1: fmt.Println(“222”) default: fmt.Println(“default”) } switch a:=1;{ //方式三 case a>=0: fmt.Println(“111”) case a>=1: fmt.Println(“222”) default: fmt.Println(“default”) }}3、Goto, Break, ContinueGO 语言支持 goto、break、continue 三种循环控制语句,三个语句都可以配合标签( label )使用,标签名区分大小写,定义后不使用会造成编译错误。func main() { var i intfor { println(i) i++ if i > 2 { goto BREAK }}BREAK: println(“break”)EXIT: // Error: label EXIT defined and not used}注意,goto、continue、break语句跳出到标签,一定要注意标签的位置,避免死循环。注意:goto语句与标签之间不能有变量声明,否则编译错误。func main() { fmt.Println(“start”) goto Loop var say = “hello oldboy” fmt.Println(say)Loop: fmt.Println(“end”)}//会引发编译错误break 语句跳出当前循环。可以配合标签使用跳出多层循环。continue :跳过当前循环的剩余语句,然后继续进行下一轮循环。。也可以配合标签跳出多层。