GO语言补充(一)

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 main

import "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)

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值