1、初识GO语言

时间:2021-09-01 01:07:23

GO语言介绍

GO语言是什么

“Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效率的软件”(来自go官网golang.org)

GO语言能干什么

1:网络编程,这一块目前应用最广,例如网站开发。

2:服务器编程,例如:处理日志,处理文件。(在网站开发的过程中都会涉及到)

3:区块链开发

环境安装

Go安装包下载网址:https://www.golangtc.com/download

有zip压缩版和msi安装版两个按本下载。(这里使用msi安装版,比较方便)。

运行msi安装文件,千万不要在安装路径中出现中文,一路Next。(关于安装路径在这里可以给学生重点强调,安装的位置以及不能出现中文名称)

GO程序

1:选择文件--->新建 弹出如下对话框。

注意:程序名称,和程序保存位置不能输入中文

2:新建完成后,开始输入代码。

1、初识GO语言

 第一行:每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。

第三行代码:import表示导入,“fmt”是包名.

第五行代码:表示程序的入口,程序就是从该位置开始执行的,就像是教室的门口一样,注意该行代码是固定的写法,func 与main之间必须有空格,同时main后面必须带小括号,后面的一对大括号表示要完成的具体工作,也就是完成具体任务的代码必须写在一对大括号内。

  func表示后面跟着的main是一个函数,函数必须有一对小括号。什么是函数呢?现在大家可以先理解与我们在数学中学到的函数是一样的,都是实现某个具体的功能,例如我们学习的三角函数等。Main函数实现的就是入口功能。再次强调一下,GO语言中的函数前面必须加上func这个单词,而且函数名称后面必须跟一对小括号。

第六行代码:就是使用了fmt包(注意具体使用的时候不需要加上双引号)中的Print函数,将要“hello go” 打印在屏幕上。这行代码要注意的是,fmt包与Print函数之间是用.(点连接的),该点是在半角输入法状态下输入,同时Print函数第一个字母P是大写的,不能写成小写,也就是说GO语言是区分大小写的,有很多同学在这里容易出错。将要输出的信息写在Print函数的括号内(注意括号也是在半角状态下输入的),并且用双引号包裹起来(双引号也是半角状态下输入的)

3:代码运行

我们第一个GO程序已经写完了,那么我们写的程序到底能否运行呢?是否有错误呢?下面我们执行我们的程序,程序的执行分为两步:

  1. 编译

编译的操作步骤:点击 “编译” 菜单,选择 “Build” (或者直接按快捷键Ctrl+B).编译的目的是检查我们写的代码是否出错,如果没有出错,那么会提示“成功”,并且在我们程序所在的目录生成一个.exe文件,该文件就是可执行文件。如果出错那么会显示错误信息,并且不会生成.exe文件

  1. 执行

编译操作完成后,我们就可以执行我们的代码了,选择“编译”菜单中的”Run”,执行。执行的就是编译所生成的.exe文件。这时,有同学可能就会问,如果我们不执行“Build”,直接执行”Run”,可以吗?不可以,因为不执行”Build”就无法生成”.exe”文件,那么也就无法执行。最后,我们为了方便高效可以选择“Run”,这个选项,将编译与执行放在一起操作。

4:其它注意事项

现在我们已经将我们写的第一个GO语言程序,执行成功了,但是还有以下几点内容需要在给大家强调一下:

  1. 强制左花括号{的放置位置,如果把左花括号{另起一行放置,这样做的结果是Go编译器报告编译错误。
  2. 每行代码占一行。
  3. 如果我们在我们已经成功的程序中,在加入一行输入,应该怎么加呢?直接输入fmt.Print("aaaaa"),然后直接执”Run”,发现并没有新的内容输出,原因是什么?应该怎么做?
  4. 关于换行输出的问题,前面的输出都没有换行,那么怎样进行换行输出呢?

三:注释

接下来,在看下面的代码,由于在一些代码行上有汉字,所以阅读起来就很方便。

1、初识GO语言

 注释分类

(1)单行注释

所谓单行注释,就是每次给一行代码加注释,你可以在任何地方使用以 // 开头的单行注释。

1、初识GO语言

 以//开头,//右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用

(2)多行注释

若果代码量比多,每行加注释,比较麻烦,可以使用多行注释。

1、初识GO语言

四:变量

1:什么叫变量

 所谓的变量简单的理解就是计算机用来存储数据的。我们可以理解变量就像我们去超市买商品时用到的购物车,我们先将商品从货架上拿下来,放到购物车中,结账时在从购物车中取出商品。计算机通过变量来保存数据实际上将数据存储到计算机的内存中,这里我们可以画一个图给大家理解一下。

计算机将内存划分成不同的区域,数据就是存储在这些区域中,那么怎样从这些区域中将数据取出来呢?计算机将每块区域都加上了一串数字,作为编号。通过该编号就可以将数据取出来了,但是问题是,这一串数字对我们程序员来说是非常难记忆的,

为了解决这个问题,我们可以通过变量的方式来表示存储的数据,如下图:

1、初识GO语言

 2:变量类型

我们现在理解了变量可以用来存储数据,但是我们要存储的数据类型是各种各样的,例如:整数,小数,文本等等。所以我们必须在定义变量时就要告诉计算机,定义的变量存储是什么类型的数据。那么在内存中就可以根据不同的类型来开辟不同的存储空间。

生活中关于“类型“的例子

1、初识GO语言

 3:变量声明

所谓声明变量就是创建一个变量,并且指定该变量存储什么类型的数据。

Go语言引入了关键字var,而类型信息放在变量名之后,示例如下:

1、初识GO语言

 注意:这里的输出是先将变量a的值取出来,然后在打印在屏幕上。所以不能给a这个变量加上引号。

4:变量初始化

现在我们虽然已经完成变量的定义了,但是该变量中存储的值,并不是我们想要的,我们希望变量中存储的是我们想要的值,应该怎么办?

我们可以在定义变量时,就给变量赋值,这种方式就是变量的初始化。示例如下:

1、初识GO语言

注意:在这里我们将”=”符号,读作“赋值号”,不能读作“等号”。

问题:以下的程序输出的结果是多少?

      var c int =20

fmt.Println(“c”)

同时再次强调一下在这里输出变量c的值,所以不能给变量c加上双引号。

5:变量赋值

除了在定义变量时,完成初始化以外,我们也可以在变量定义完后,再给变量赋值,也就是先声明后赋值,示例如下:

1、初识GO语言

注意:上面的输出语句也可以只使用一个Println函数,具体如下:fmt.Println(a,b),中间用逗号进行分割

问题1:以下程序的输出结果是多少?

1、初识GO语言

 问题2:以下程序的输出结果是多少?

 1、初识GO语言

 结论:变量可以重复赋值,一旦给一个变量赋了新值,那么变量中的老值就不复存在了

6:自动推导类型

在给变量赋值时,我们感觉非常麻烦,有没有更简单的给变量赋值的方式,我们可以使用自动推导类型,具体示例如下:

1、初识GO语言

所谓自动推导类型,就是不用通过var 声明变量,不用指定类型,直接在变量名后面跟”:”号,同时完成赋值。那么GO会根据所赋的值自动推导出变量的类型。如果给num变量赋值为小数,那么该变量的类型为小数类型(浮点)。

通过比较,我们发现这种方式比前面的赋值方式要简单方便。这种方式,也是我们以后开发过程中最常用的方式。

7:多重赋值匿名变量

1)多重赋值

在上面的讲解中,我们给变量num赋值,采用了自动推导的方式,如果想一次使用自动推导的方式,给多个变量赋值,应该怎样实现呢?具体如下:

1、初识GO语言

 但是这种方式写起来非常的复杂,可以用如下的方式进行简化:

1、初识GO语言

 将1的值赋值给a,将10的值赋值给b,将30的值赋值给c.

(2)匿名变量

_匿名变量,丢弃数据不进行处理, _匿名变量配合函数返回值使用才有价值,目前大家只需要知道其语法,后面学到函数时,我们在强调匿名变量的使用场景。

现在我们先看一下匿名变量的语法:

1、初识GO语言8:数据置换

到目前为止,我们已经学习了什么是变量,变量的定义,以及变量的赋值。那么下面大家思考如下问题:

有两个变量a和b, a的值为10,b的值为20,交换两个变量的值?

(有两个杯子,都盛满了水,怎样交换两个杯子中的水)

使用传统方式实现

1、初识GO语言

使用多重赋值的方式实现

1、初识GO语言

 多重赋值的方式交换两个变量的值,比通过第三个变量来进行变量交换更简单,代码也少。

9:输出格式

关于“输出“大家也都能够理解是什么意思了,就是将数据信息打印在电脑屏幕上。生活中也随处可见输出的场景。

1、初识GO语言

在我们GO语言中进行输出,用到我们前面所讲解的两个函数:Print()和Println()

这个两个函数的区别就是Print()函数不换行,Println()换行输出。

关于输出这里有两个问题,需要给大家强调清楚。

  1. 我们前面的程序中,已经多次用到输出,不管是采用Print(),还是Println(),但是问题是,每次输出的数据结构不清晰,比较混乱。

例如如下程序:

1、初识GO语言

 该程序输出的结果是 1,10,20 .如果我们现在让另外一个程序员查看该结果,该程序员很难分清楚,1是来自哪个变量,2是来自哪个变量,3来自哪个变量,除非该程序员阅读代码。但是,大家想一下,如果该程序的代码量非常大,那么该程序员阅读代码是否要花费很长的时间呢?所以,建议采用如下输出:

1、初识GO语言

 双引号内的内容会原样输出。这样结构比较清晰,注意与变量名之间用逗号分隔。

  1. 除了使用Println()函数换行输出以外,还有另外一个函数Printf()也可以实现换行输出。示例如下:

1、初识GO语言

运行以后,发现确实换行了。这种输出方式,就是格式化输出,%d,表示输出的是一个整数,第一个%d会被变量a的值替换,第二个%d会被变量b替换,其它类型的输出用什么去表示后面会给大家讲解。 “\n” 表示换行。

有同学可能就问了,这种换行输出方式比较麻烦,但是如果一次性有结构的输出多个变量的值,Println()输出就会比较麻烦,并且结构也会感觉比较混乱,还是以上面的代码为例,如下:

1、初识GO语言

 下面我们在给大家演示函数Printf()的输出:

1、初识GO语言

 通过对比发现Printf()函数一次性换行输出多个变量值,结构清晰。

10:接收输入

前面我们所写的所有的程序,都是直接给变量赋值,但是很多情况下,我们希望用户通过键盘输入一个数值,存储到某个变量中,然后将该变量的值取出来,进行操作。我们日常生活中也经常用到输入的场景:

1、初识GO语言

咱们在银行ATM机器前取钱时,肯定需要输入密码,对不?

那么怎样才能让程序知道咱们刚刚输入的是什么呢??

大家应该知道了,如果要完成ATM机取钱这件事情,需要先从键盘中输入一个数据,然后用一个变量来保存,是不是很好理解啊!

那么我们GO语言怎样接收用户的键盘输入呢?如下:

1、初识GO语言

 在GO中我们用到了“fmt”这个包中的Scanf()函数来接收用户键盘输入的数据。当程序执行到Scanf()函数后,会停止往下执行,等待用户的输入,输入完成后程序继续往下执行。在这里重点要注意的是Scanf()函数的书写格式,首先也要用“%d”,来表示输入的是一个整数,输入完整数后存储到变量age中,注意这里age变量前面一定要加上“&”符号,表示获取内存单元的地址(前面我们说的内存存储区域的编号),然后才能够存储。

还有另外一种获取用户输入数据的方式,如下:

1、初识GO语言

 通过Scan函数接收用户输入,这时可以省略掉%d,这种写法更简单。

11:变量命名规范

在我们前面的编程中,我们定义变量时都是随意进行命名,但是在GO语言中,对变量的命名有一些规范性的要求,下面我们看一下具体的要求。

变量命名规范要求

名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字。

除了上面提到的规范要求以外,GO语言自己特有的,具有一定含义的一些字符,也不能作为变量名称。例如,前面我们接触到的func, fmt,print等等,这些都是GO自带的,具有特殊含义的字符,我们称为关键字。

1、初识GO语言

以上关键字都不能作为变量的名称。

此外,还有大约30多个预定义的名字,比如int和true等

1、初识GO语言

见名知意 

起一个有意义的名字,尽量做到看一眼就知道是什么意思(提高代码可 读性) 比如: 名字 就定义为 name , 定义学生 用 student

驼峰命名法

1、初识GO语言

小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog

大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:FirstName、LastName

不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如send_buf

五:基础数据类型

前面我们写的程序中,用到的变量的类型都是整型,但是在我们GO语言中,还有很多其它的类型,

类型

名称

长度

零值

说明

bool

布尔类型

1

false

其值不为真即为假,不可以用数字代表true或false

byte

字节型

1

0

uint8别名

int, uint

整型

-

0

有符号32位或无符号64位

int8

整型

1

0

-128 ~ 127,

uint8

整型

1

0

0 ~ 255

int16

整型

2

0

-32768 ~ 32767,

uint16

整型

2

0

0 ~ 65535

int32

整型

4

0

-2147483648 到 2147483647

uint32

整型

4

0

0  4294967295(42亿)

int64

整型

8

0

-9223372036854775808到 92233720368547758070

uint64

整型

8

0

到 18446744073709551615(1844京)

float32

浮点型

4

0.0

小数位精确到7

float64

浮点型

8

0.0

小数位精确到15位

string

字符串

""

utf-8字符串

下面我们看一下几个非常重要的类型,其它类型随着课程的深入,后面会给大家讲解到。

1:布尔类型

在计算机中,我们用什么数据类型来表示一句话的对错,例如:在计算机中描述张三(20岁)比李四(18)小,这句话的结果?

布尔类型的变量取值要么是真(true),要么是假(false),用bool关键字来进行定义。示例如下:

1、初识GO语言

 指定格式的输出:

1、初识GO语言

 布尔类型主要用于后面讲解的条件判断,关于条件判断,我们在这里先举一个生活中的案例,大家可以理解一下:

1、初识GO语言

 2:浮点型

1、初识GO语言

 有格式的输入与输出

1、初识GO语言

注意:varf1float32

    f1=12

       f2:=12.0//如果不加小数点,f2会被推导为整型而不是浮点型

3:字符类型

(1)字符基本输入与输出

所谓字符类型是用单引号括起来的单个字符,关于字符的定义使用如下:

1、初识GO语言

输入一个字符,如下所示:

1、初识GO语言

  1. 字符第二种输入与输出方式。

1、初识GO语言

这里定义了,ch是一个字符类型,赋值却是一个整数97,打印的结果是小写字符’a’.

原因是:计算机不能直接存储字符类型,只能转成数字存储,但是为什么小写字符‘a’,对应的整数是97呢?因为,计算机是根据’ASCII’码来存储。(这里只是简单介绍ASCII

1、初识GO语言

 注意强调:

1、初识GO语言

 问题,以下代码输出的结果是多少?

 1、初识GO语言

转义字符

字符除了我们常见的字符‘a’,字符’b’等等以外,还有一些特殊的字符,例如我们讲解的’\n’, 它的作用是什么?换行,不会在屏幕上输出具体的内容。这种字符我们称为转义字符(具有特殊含义),那么除了’\n’字符以外,还有哪些是我们以后编程中经常用到的转义字符呢?

\":表示一个英文半角的双引号

t:表示一个tab键的空格(可以用来对输出的内容进行排版)

1、初识GO语言

 \\:表示一个\(主要用在表示磁盘目录上,后面我们讲解文件操作时,经验要根据磁盘目录获取文件然后进行读取,写入等操作)

1、初识GO语言

 4:字符串类型

用单引号括起来的单个字符是字符类型,用双引号括起来的字符是字符串类型。“a”是字符还是字符串呢?

下面是关于字符串的定义使用:

1、初识GO语言

 字符串输入:

1、初识GO语言

 5:字符与字符串区别

关于字符与字符串的区别:

1、初识GO语言

 6:fmt输出输入

我们前面在输出与输入字符串类型,字符类型,整型等都指定了对应的格式化,那么go语言中还有哪些格式化呢?

格式

含义

%%

一个%字面量

%b

一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数

%c

字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

%d

一个十进制数值(基数为10)

%f

以标准记数法表示的浮点数或者复数值

%o

一个以八进制表示的数字(基数为8)

%p

以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示

%q

使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字

%s

字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

%t

以true或者false输出的布尔值

%T

使用Go语法输出的值的类型

%x

以十六进制表示的整型值(基数为十六),数字a-f使用小写表示

%X

以十六进制表示的整型值(基数为十六),数字A-F使用小写表示

大家目前先掌握该表格中,标注红色的内容。在红色内容中,我们没有用到的是%T,作用是输出值的类型,示例如下:

1、初识GO语言

 六:常量

1:常量定义使用

在讲解常量之前,我们要先简单说一下我们前面讲解的变量。我们都知道,变量是用来存储数据,并且变量里面存储的值是可以在程序运行时随时发生变化的,例如如下案例,结果输出是多少?

1、初识GO语言

这个程序我们前面已经做过,最终的输出结果是20,因为重新给number变量赋值。

但是,常量里面的值确定好后,后面是不允许修改的。下面看一下关于常量的定义使用:

1、初识GO语言

常量的命名规范与变量命名规范一致。

问题:什么场景下会用到常量呢?

在程序开发中,我们用常量存储一直不会发生变化的数据,例如:π,身份证号码等。像这类的数据,在整个程序中运行中都是不允许发生改变的。

2:字面常量

所谓字面常量(literal),是指程序中硬编码的常量,如:

1、初识GO语言

 3:iota枚举

常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。

注意:在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。

具体使用方式如下:

1、初识GO语言

 七:运算符

在前面的课程中,我们已经学习了变量,常量,那么接下来我们学习一下运算符。GO语言中常见的运算符有算术运算符,赋值运算符,关系运算符,逻辑运算符等。

1:算术运算符

运算符

术语

示例

结果

+

10 + 5

15

-

10 - 5

5

*

10 * 5

50

/

10 / 5

2

%

取模(取余)

10 % 3

1

++

后自增,没有前自增

a=0; a++

a=1

--

后自减,没有前自减

a=2; a--

a=1

算术表达式:由算术运算符连接起来的式子.如:1+1    a-b(变量ab前面已声明并赋初值)

下面以a=10 ,b=20为例进行计算

1、初识GO语言

 自增与自减操作

1、初识GO语言

 a++等价于a=a+1

注意:GO语言中没有前自增,这是与其它编程语言不同的地方。

(2)演示:某学生三门课成绩为,语文:90  数学:80  英语:67,编程求总分和平均分.

1、初识GO语言

虽然已经计算出总分与平均分了,但是我们可以对上面的程序进行优化,怎么优化呢?示例如下: 

1、初识GO语言

 以上程序大家需要注意几点:

(2.1)该程序比第一种实现减少了变量的定义,可以减少对内存的占用,所以变量不是定义越多越好。

    1. 注意运算优先级:先乘除,后加减,有括号先算括号里的,相同级别的从左至右运算   int a=((1+5)+3)*2
    2. 小括号可以无限制的套用,但一定要成对出现

(3)类型转换:

现在我们把上面提的需求修改一下:语文:90  数学:80  英语:69,编程求总分和平均分.

只是将英语的成绩进行了修改,还是计算总分和平均分

1、初识GO语言

 但是平均分的计算结果还是79分,为什么没有小数呢?

现在将程序进行如下修改:

1、初识GO语言

 Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间

1、初识GO语言

  1. 思考题:

(4.1)请阅读以下程序,如果该程序正确,请说出程序运行的结果,如果有错误,请说出错误原因,并指明怎样进行修改?

1、初识GO语言

 (4.2)以下程序,如果正确请说出程序运行的结果,如果错误,请说出错误原因,并指明怎样进行修改?1、初识GO语言

 (4.3)以下程序,如果正确请说出程序运行的结果,如果错误,请说出错误原因,并指明怎样进行修改?

1、初识GO语言

(5)练习:

练习1:定义两个数分别为100和20,打印出两个数的和。

练习2:计算半径为5的圆的面积和周长并打印出来.(pi为3.14)面积:pi*r*r; Perimeter(周长)

练习3:某商店T恤(T-shirt)的价格为35元/件,裤子(trousers)的价格为120元/条.小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

打8.8折后呢?

1、初识GO语言

 注意:以上代码定义多个变量,主要目的是让大家理解类型转换

练习4:如上题中打完8.8折后出现小数,商店为了结算方便,只收用户整数部分的钱,如本应收用户303.6,现在只收用户303元,应该如何做?

1、初识GO语言

           强制类型转换总结

强制类型转换的语法格式:

 数据类型名(待转换的值)

例如:

1、初识GO语言

 强制类型转换,数据类型一定要相兼容下面的写法对吗?

1、初识GO语言

谨记:int 转float强制转换,多小数

float转int强制转换,丢精度.

        补充:关于“+”运算符,除了可以完成两个数字相加以外,也可以链接两个字符串,如下:

 1、初识GO语言

 2:赋值运算符

关于赋值运算符前面我们已经使用过多次,赋值运算符 =   ,

varint num=9;num=num+1; 这里的=号是赋值运算符,不是数学义意上的相等.

常见的赋值运算符如下,前面我们使用的=是普通赋值,+=,-=等我们称为“复合赋值运算符”

运算符

说明

示例

=

普通赋值

c = a + b 将 a + b 表达式结果赋值给 c

+=

相加后再赋值

c += a 等价于 c = c + a

-=

相减后再赋值

c -= a 等价于 c = c - a

*=

相乘后再赋值

c *= a 等价于 c = c * a

/=

相除后再赋值

c /= a 等价于 c = c / a

%=

求余后再赋值

c %= a 等价于 c = c % a

3:关系运算符

关系运算符我们又称为比较运算符,听到比较这个词,大家想到的就是比较大小,例如:

大象的重量(1500)>老鼠的重量(1)

兔子的寿命(3)>乌龟的寿命(1000)

我的年龄(20)==你的年龄(20)

提问:比大比小的结果是什么?

结果是对或者是错,在GO语言中,怎样表示对于错呢?

关系运算的结果是布尔类型的。

bool值只有两个

真:true

假:false

GO语言中常见的关系运算符如下:

运算符

术语

示例

结果

==

相等于

4 == 3

false

!=

不等于

4 != 3

true

<

小于

4 < 3

false

>

大于

4 > 3

true

<=

小于等于

4 <= 3

false

>=

大于等于

4 >= 1

true

由以上关系运算符链接的表达式我们称为关系表达式。

关系运算符具体使用方式如下:

1、初识GO语言

4:逻辑运算符

(1)常见的逻辑运算符如下:

运算符

术语

示例

结果

!

!a

如果a为假,则!a为真

如果a为,则!a为假。

&&

a && b

如果a和b都为真,则结果为真否则为假

||

a || b

如果a和b有一个为真,则结果为真,二者都为假时,结果为假

有逻辑运算符连接的表达式叫做逻辑表达式

通过以上表格我们发现:逻辑表达式的结果同样也是bool类型

逻辑运算符两边放的一般都是关系表达式或者bool类型的值。

例如:

5>3 &&true

3>5||false

  1. 总结

(3.1)逻辑与 &&

表达式1&&表达式2

表达式1

表达式2

表达式1&&表达式2

True

True

True

False

True

False

True

False

False

False

False

false

(3.2)逻辑或 ||

表达式1||表达式2

表达式1

表达式2

表达式1||表达式2

True

True

True

True

False

True

False

True

True

False

False

false

(3.3)逻辑非 !

!表达式

表达式

!表达式

True

False

False

true

5:其他运算符

运算符

术语

示例

说明

&

取地址运算符

&a

变量a的地址

*

取值运算符

*a

指针变量a所指向内存的值

关于指针的应用,我们后面会重点给大家讲解,目前大家只需要掌握&

6:运算符优先级

1)上面我们已经将运算符介绍完了,下面说一下它们的运算符优先级。

在Go语言中,一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。)拥有最高的优先级,二元运算符的运算方向均是从左至右。

下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

如下图所示:

优先级

运算符

7

^      !   

6

*       /    %    << >>&&^

5

+      -     |      ^

4

==   !=   < <=    >=    >

3

<-

2

&&

1

||

上图中部分运算符现在没有讲解到,后期用到时再给大家具体讲解,目前大家需要掌握的是算术,赋值,关系,逻辑,取地址运算符。

  1. 案例练习:

写下判断闰年的表达式,设待判断的年份变量为year.

闰年的判定(符合下面两个条件之一):

年份能够被400整除.(2000)

年份能够被4整除但不能被100整除.(2008)

让用户输入一个年份,如果是润年,则输出true,如果不是,则输出false.

2100/1600/1800/2009年是闰年吗?

1、初识GO语言

 注意:逻辑与的优先级要高于逻辑或。