《61396-Go语言程序设计项目化教程(微课版)2.1 基本运算.pptx》由会员分享,可在线阅读,更多相关《61396-Go语言程序设计项目化教程(微课版)2.1 基本运算.pptx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基本运算基本运算关键字与标识符数据类型变量和常量运算符01.03.02.04.目录字符串拼接05.数据类型转换06.01关键字和标识符25个关键字标识符命名规则1关键字和标识符关键字和标识符breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvar关键字:被赋予了特殊含义的单词,又叫保留字。Go语言中的关键字一共有 25 个。标识符特点标识符的命名要尽量采取简短且有意义。不能和标准库中的包名重复。
2、为变量、函数、常量命名时采用驼峰命名法,例如stuId、stuName。标识符声明使用标识符之前必须进行声明。声明一个标识符就是将这个标识符与常量、类型、变量、函数或者代码包绑定在一起。在同一个代码块内标识符的名称不能重复。标识符定义Go语言对各种变量、方法、函数等命名时使用的字符序列。由若干个字母、下划线(_)、和数字组成,且第一个字符必须是字母。1关键字和标识符关键字和标识符标识符规则由26个英文字母、09、_组成不能以数字开头Go语言中严格区分大小写标识符不能包含空格不能以系统保留关键字作为标识符标识符的命名要尽量采取简短且有意义的词不能和标准库中的包名重复1关键字和标识符关键字和标识符
3、1关键字和标识符关键字和标识符预定义标识符:自身具有一些特殊含义的标识符。Go语言中的预定义标识符一共有 37 个。内建常量nil、iota、true、false内建类型int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、uintprt、float32、float64、complex64、complex128、bool、byte、rune、string、error内建函数append、cap、close、complex、copy、delete、imag、len、make、new、panic、real、recovervarstuI
4、dint/声明一个int类型、名为stuId的标识符varstuNamestring=“姓名“/声明一个string类型、名为stuName、值为姓名的标识符标识符声明示例错误标识符示例0102var1numint/不能以数字开头varbreakstring/不能以系统保留关键字作为标识符1关键字和标识符关键字和标识符02变量和常量变量的定义变量的标准格式声明变量的批量格式声明变量的简短格式声明常量的定义常量的显式定义常量的隐式定义varaint=100 x000110变量内存varp*int=&a0 x00010 x0005变量:一种能够储存值或者计算结果的抽象概念。是内存中的一个数据存储空
5、间的标识,变量可以看做是一个内存地址,通过内存地址,我们可以找到这个地址所存储的数据。2变量和常量变量和常量局部变量函数体内声明的变量称之为局部变量,作用域只在函数体内,函数的参数和返回值变量都属于局部变量。函数调用结束后这个局部变量就会被销毁。全局变量在函数体外声明的变量称之为全局变量,全局变量声明必须以var关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。形参变量在定义函数时函数名后面括号中的变量叫做形式参数变量。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁。2变量和常量变量和常量2变量和常量变量和常量关键字var开头,后置变量类型格式:var变量名变量类型标准初始
6、化格式:var变量名变量类型=初始化值变量标准格式声明示例1:vargoodsNamestring=Go语言“示例2:varstuNamestringstuName=“小明“2变量和常量变量和常量存放一组变量定义格式:var(a变量类型b变量类型c,d变量类型)变量批量格式声明示例:var(goodsPricefloat32goodsNum,goodsIdint)goodsId=123goodsNum=5goodsPrice=6.72变量和常量变量和常量定义在函数内部的显式初始化,不提供数据类型格式:变量名:=变量值变量名1,变量名2:=变量值1,变量值2变量简短格式声明示例1:goodsNa
7、me:=Go语言“示例2:goodsSize,goodsID:=50kg“,”go0001”2变量和常量变量和常量常量的数据类型布尔型数字型整数浮点复数字符串型标准定义格式:const常量名常量类型=常量值显式定义格式:const常量名常量类型=常量值隐式定义格式:const常量名=常量值常量:一种简单值的标识符,在程序运行时它的值不会被改变。2变量和常量变量和常量packagemainimportfmtfuncmain()constaint=1constb,c=2,Cfmt.Println(a)fmt.Println(b)fmt.Println(c)运行结果为:12Ca是显式类型定义,即能看
8、到数值类型。b,c是隐式类型定义。03数据类型布尔型(bool)数字类型字符串类型派生类型3数据类型数据类型类型解释布尔型(bool)布尔型的值只可以是常量、true或者false数字类型整型(int)和浮点型(float32、float64)字符串类型字符串就是一串固定长度的字符连接起来的字符序列派生类型指针类型(Pointer)数组类型结构体类型(struct)Channel类型函数类型切片类型接口类型(interface)Map类型3数据类型数据类型数字类型解释uint8无符号8位整型(0到255)uint16无符号16位整型(0到65535)uint32无符号32位整型(0到42949
9、67295)uint64无符号64位整型(0到18446744073709551615)int8有符号8位整型(-128到127)int16有符号16位整型(-32768到32767)int32有符号32位整型(-2147483648到2147483647)int64有符号64位整型(-9223372036854775808到9223372036854775807)float32IEEE-75432位浮点型数float64IEEE-75464位浮点型数complex6432位实数和虚数complex12864位实数和虚数byte类似uint8rune类似int32uintptr无符号整型,用于
10、存放一个指针3数据类型数据类型packagemainimportfmtfuncmain()varnumintfmt.Println(num=,num)varpai_32float32=3.12345678901234567890varpai_64float64=3.12345678901234567890fmt.Println(pai_32=,pai_32)fmt.Println(pai_64=,pai_64)varnum1complex64=1.2+3ivarnum2=complex(1.2,3)fmt.Printf(num1的数据类型是:%Tn,num1)fmt.Printf(num2的数
11、据类型是:%Tn,num2)运行结果为:num=0pai_32=3.1234567pai_64=3.1234567890123457num1的数据类型是:complex64num2的数据类型是:complex128数值类型默认值为0float32大约可以提供小数点后6到8位的精度float64可以提供小数点后15位的精度Complex64分为32位实数和32位虚数Complex128分为64位实数和64位虚数04运算符算术运算符关系运算符逻辑运算符位运算符赋值运算符其它运算符运算符描述实例实例结果+相加1+12-相减1-10*相乘1*11/相除1/21%求余(取模)1%2(12=01)1+自增
12、a=1a+(等价于a=a+1)a=2-自减a=1a(等价于a=a-1)a=0+正号+11-负号-1-1+字符串相加(连)hello+WorldhelloWorld4算数运算符算数运算符两 个 运 算 数 的 类 型 必 须 相 同 并 且 为 基 本 数 据 类 型packagemainimportfmtfuncmain()fmt.Println(1.0/2=,1.0/2)运算结果为:1.0/2=0.5packagemainimportfmtfuncmain()fmt.Println(1/2=,1/2)运算结果为:1/2=04算数运算符算数运算符varaint=1varbinta+/正确b=(
13、a+)/错误,因为自增自减只能当作一个独立的语句使用+a/错误,因为自增自减只能写在变量的后面自 增 和 自 减 在 G o 语 言 中 构 成 单 独 的 语 句,不 是 表 达 式4算数运算符算数运算符运算符运算含义实例=等于检查两个值是否相等,如果相等返回True否则返回False。(1=1)为True(1=2)为False!=不等于检查两个值是否不相等,如果不相等返回True否则返回False。(1!=2)为True(1!=1)为False大于检查左边值是否大于右边值,如果是返回True否则返回False。(10)为True(12)为False小于检查左边值是否小于右边值,如果是返回T
14、rue否则返回False。(12)为True(1=大于等于检查左边值是否大于等于右边值,如果是返回True否则返回False。(1=1)为True(1=2)为False=小于等于检查左边值是否小于等于右边值,如果是返回True否则返回False。(1=2)为True(1=0)为False4关系运算符关系运算符运算符描述含义实例&逻辑与逻辑AND运算符。如果两边的操作数都是True,则条件True,否则为False。(一假为假)varabool=truevarbbool=false(a&a)为True(a&b)为False(b&b)为False|逻辑或逻辑OR运算符。如果两边的操作数有一个Tru
15、e,则条件True,否则为False。(一真为真)varabool=truevarbbool=false(a|a)为True(a|b)为True(b|b)为False!逻辑非逻辑NOT运算符。如果条件为True,则逻辑NOT条件False,否则为True。(结果取反)varabool=truevarbbool=false(!a)为False(!b)为True4逻辑运算符逻辑运算符运算符含义按位与(&)两位全为1,结果为1,否则为0。(全1为1)按位或(|)两位有一个为1,结果为1,否则为0。(有1为1)按位异或()两位一个为0,一个为1,结果为1,否则为0。(相同为0,不同为1)pqp&qp|
16、qpq000000101111110100114位运算符位运算符运算符含义左移()低位溢出,符号位不变,并用符号位补溢出的高位4位移运算符位移运算符packagemainfuncmain()varaint=1varbint=2println(a&b=,ab)运行结果为:ab=01的二进制为01,左移2位是100,转换成十进制为4。1的二进制为01,右移2位是00,转换成十进制是0。运算符描述含义实例=等于简单的赋值运算符,将一个表达式的值赋给一个左值c=a+b将a+b表达式结果赋值给c+=加等于相加后再赋值a+=b等价于a=a+b-=减等于相减后再赋值a-=b等价于a=a-b*=乘等于相乘后再
17、赋值a*=b等价于a=a*b/=除等于相除后再赋值a/=b等价于a=a/b%=取模等于求余后再赋值a%=b等价于a=a%b=左移等于左移后赋值a=2等价于a=a=右移等于右移后赋值a=2等价价于a=a2&=位于等于按位与后赋值a&=2等价于a=a&2=异或等于按位异或后赋值a=2等价于a=a2|=位或等于按位或后赋值a|=2等价于a=a|24赋值运算符赋值运算符运算符描述实例&返回变量存储地址&a;取出变量的实际地址*指针变量*a;定义一个指针变量go不支持三元运算符若要实现三元运算,可以使用if-else进行实现4其它运算符其它运算符05字符串拼接5种拼接方式5字符串拼接字符串拼接str=s
18、tr1+str2str=fmt.Sprintf(%s%d%s,str1,i,str2)“+”sprintf()varstrsstring=stringstr1,str2str:=strings.Join(strs,)join()/定义字节缓冲变量btvarbtbytes.Bufferbt.WriteString(str1)bt.WriteString(str2)str:=bt.String()buffer.WriteString()varbuildstrings.Builderbuild.WriteString(str1)build.WriteString(str2)str:=build.St
19、ring()buffer.Builder()packagemainimport(bytesfmt)funcmain()varstr1=avarstr2=bvarstrA=str1+str2fmt.Println(strA)varstrB=fmt.Sprintf(%s%d%s,str1,1,str2)fmt.Println(strB)varbtbytes.Bufferbt.WriteString(str1)bt.WriteString(str2)strC:=bt.String()fmt.Println(strC)运算结果为:aba1bab5字符串拼接字符串拼接06数据类型转换数据类型转换要求6数
20、据类型转换数据类型转换valueOfTypeB=typeB(valueOfTypeA)Go语言所有的类型转换都必须显式的声明类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将int16转换为int32)。当从一个取值范围较大的类型转换到取值范围较小的类型时(将int32转换为int16或将float32转换为int),会发生精度丢失(截断)的情况。只有相同底层类型的变量之间可以进行相互转换(如将int16类型转换成int32类型),不同底层类型的变量相互转换时会引发编译错误(如将bool类型转换为int类型)定义packagemainimpor
21、t(fmtreflectstrconv)funcmain()/初始化一个32位整型值varaint32=1234567890fmt.Printf(a的值为:%d,类型为:%sn,a,reflect.TypeOf(a)b:=int16(a)/精度丢失fmt.Printf(b的值为:%d,类型为:%sn,b,reflect.TypeOf(b)c:=strconv.Itoa(int(a)fmt.Printf(c的值为:%s,类型为:%sn,c,reflect.TypeOf(c)运算结果为:a的值为:1234567890,类型为:int32b的值为:722,类型为:int16c的值为:1234567890,类型为:string6数据类型转换数据类型转换谢谢观看谢谢观看