04Go基本语法

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)For

go语言没有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, Continue

GO 语言支持 goto、break、continue 三种循环控制语句,三个语句都可以配合标签( label )使用,标签名区分大小写,定义后不使用会造成编译错误。

func main() {
    var i int
for {
    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 :跳过当前循环的剩余语句,然后继续进行下一轮循环。。也可以配合标签跳出多层。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

为你推荐:

相关软件推荐:

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言基础

C语言基础

安博教育集团 / 2012-2 / 37.00元

《C语言基础》深入浅出地介绍了C语言程序设计的基础知识,内容涉及C语言基础、算法基础、变量、数据类型、运算符、输入/输出相关函数、选择结构、循环结构、各种表达式、数组、字符串、指针、函数、结构体、ISO C99的扩展语法等。全书内容丰富,结构严谨,层次清晰,语言生动,论述精准而深刻,实例丰富而实用。 《C语言基础》不仅适合用做计算机职业培训的首选教材,也可作为普通高校教材使用,更是C语言初学......一起来看看 《C语言基础》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具