GO语言补充(一)

来源:互联网 发布:个人简历模板软件 编辑:程序博客网 时间:2024/05/22 14:07

GO语言补充

常量的定义

常量的值在编译时就已经确定常量的定义格式与变量基本相同等号右侧必须是常量或者常量表达式常量表达式中的函数必须是内置函数

这里写图片描述

常量的初始化规则与枚举

在定义常量组时,如果不提供初始值,则表示将使用上行的表达式使用相同的表达式不代表具有相同的值iota是常量的计数器,从0开始,组中每定义1个常量自动递增1通过初始化规则与iota可以达到枚举的效果每遇到一个const关键字,iota就会重置为0

这里写图片描述

这里写图片描述


运算符

Go中的运算符均是从左至右结合优先级(从高到低)^      !                                               (一元运算符)*       /    %    <<    >>    &      &^+      -     |      ^                         (二元运算符)==   !=   <    <=    >=    ><-                               (专门用于channel)&&||

指针

Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针目标对象的成员

操作符”&”取变量地址,使用”*”通过指针间接访问目标对象
默认值为 nil 而非 NULL

递增递减语句

    在Go当中,++ 与 -- 是作为语句而并不是作为表达式

判断语句if

条件表达式没有括号支持一个初始化表达式(可以是并行方式)左大括号必须和条件语句或else在同一行支持单行模式初始化语句中的变量为block级别,同时隐藏外部同名变量1.0.3版本中的编译器BUG

这里写图片描述

循环语句for

Go只有for一个循环语句关键字,但支持3种形式初始化和步进表达式可以是多个值条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替左大括号必须和条件语句在同一行

其实,就是简化编写,将while封装了起来,只使用for,if就可以了。

这里写图片描述

这里写图片描述

这里写图片描述

选择语句switch

可以使用任何类型或表达式作为条件语句不需要写break,一旦条件符合自动终止如希望继续执行下一个case,需使用fallthrough语句支持一个初始化表达式(可以是并行方式),右侧需跟分号左大括号必须和条件语句在同一行

这里写图片描述

这里写图片描述

这里写图片描述

注意,GO语言中的switch语句支持表达式了,很强大。


跳转语句goto, break, continue

三个语法都可以配合标签使用标签名区分大小写,若不使用会造成编译错误Break与continue配合标签可用于多层循环的跳出Goto是调整执行位置,与其它2个语句配合标签的结果并不相同

这里写图片描述

这里写图片描述

看到这里,GO语言真正的震撼到我了,我在GO语言中,看到了汇编、C/C++、JAVA、PYTHON等多种语言的影子,我感受到了,它想要将多种语言的优点集于一身的努力!


数组Array

定义数组的格式:var <varName> [n]<type>,n>=0数组长度也是类型的一部分,因此具有不同长度的数组为不同类型注意区分指向数组的指针和指针数组数组在Go中为值类型数组之间可以使用==或!=进行比较,但不可以使用<或>可以使用new来创建数组,此方法返回一个指向数组的指针Go支持多维数组

注意,在比较数组的时候,保证的前提是需要a1数组和a2数组的长度相等,否则会将其视为不同类型,无法比较。

于是,这里我试了一下,可不可以将其“数组强制类型转换”之后进行比较,实践证明,这样是不行的。

这里写图片描述

在这里,用GO语言写一个冒泡排序:

package mainimport "fmt"func main() {    a := [...]int{5, 2, 6, 3, 9}    fmt.Println(a)    num := len(a)    for i := 0; i < num; i++ {        for j := i + 1; j < num; j++ {            if a[i] > a[j] {                temp := a[i]                a[i] = a[j]                a[j] = temp            }        }    }    fmt.Println(a)}